0. Code Convention이란?
-
프로그래밍(코드) 스타일
- 코드 스타일을 왜 정해야 하는가?
: 프로젝트를 수행하며, 나의 코드를 다른 사람이 읽기 좋아야하며 (가독성), 나 또한 다른 사람의 코드를 수월하게 읽고 사용하기 위해
※ 혼자 개발하더라도 일관된 코딩 스타일을 유지하는 것이 유지 보수에 용이함
- 무엇을 포함?
file, class, operation, attribute의 명칭, 주석 형식 등을 포함
※ Goal of Code convention
- Optimize for the reader, not the writer
- Be consistent with existing code
- Be consistent with the broader C++ community when appropriate
- Avoid surprising or dangerous constructs
- Avoid constructs that our average C++ programmer would find tricky or hard to maintain
- Be mindful of our scale
- Concede to optimization when necessary
1. 파일명
- 파일명은 알파벳, 숫자, 언더바(_)만 사용한다. (언더바로 시작하는 것은 X)
- e.g. Main.cpp , state_machine_2.c , StateMachine.cpp, StateMachine.h
- 같은 파일명은 한번만 사용
- cpp 파일명은 대표 클래스명을 사용한다. (Cohesion을 고려)
- cpp 파일명에는 언더바(_)를 사용 X
2. Operation / Attribute
1) Operation
- 함수와 메서드의 이름은 소문자로 시작하고, 여러 단어일 경우에는 camel case를 사용
(예: myfunction => myFunction)
- 함수와 메서드의 이름은 가능한한 명확하고 간결하게 작성할 것
- 특정한 작업을 수행하는 함수에는 동사로 시작하는 함수명 사용 (예: calculateTotal())
- 생성자 (Constructors):생성자의 이름은 클래스의 이름과 동일 (예: MyClass())
- 소멸자 (Destructors):소멸자의 이름은 클래스의 이름 앞에 '~' 추가 (예: ~MyClass())
- 멤버 변수에 접근하거나 설정하는 경우, get과 set 접두어 추가 (예: getName(), setName())
- 부울 타입 함수 (Boolean Functions): 부울 값을 반환하는 함수의 이름은 'is' 또는 'has'로 시작 (예: isEnabled(), hasValue())
2) Attribute
- 소문자로 시작하고, 여러 단어일 경우에는 underscore('_')로 단어 구분 (예: my_variable)
- 클래스의 프라이빗 멤버 변수의 경우 이름 앞에 'm_'을 추가 (예: m_privateVariable)
- 상수 멤버 변수의 이름은 'k'로 시작하며, 여러 단어일 경우에는 underscore('_')로 단어 구분 (예: const int kMaxValue)
3. 주석 형식
: comment는 코드 작성의 필수 요소
제일 중요한 건 코드 가 그 자체로 글처럼 읽혀야함
=> ' give sensible names to types and variable' 하는 것이 comment로 설명하는 것보다 훨씬 좋은 코드
- // or /* */ 를 사용 (일반적으로 전자가 더 많이 쓰임)
- 함수 바로 위에 작성
- 주석은 함수가 수행하는 작업을 설명해야 하며, 함수의 인자, 반환 값, 예외 처리를 포함
- 주석 앞에는 '/*'를 사용하고, 주석의 각 줄은 ''로 시작합니다.
int calculateSum(int num1, int num2) {
}
- 클래스 선언 바로 위에 작성
- 주석은 클래스의 역할과 목적을 설명해야 하며, 클래스의 사용법, 제약 사항, 관련된 정보를 포함
- 주석 앞에는 '/*'를 사용하고, 주석의 각 줄은 ''로 시작합니다.
class Car {
};
4. Class 형식
- 멤버 변수의 정의는 멤버 함수의 정의보다 먼저 할 것
- Class comment를 class 선언 바로 위에 작성
1) 멤버 변수
- private 또는 protected로 선언
- 멤버 변수명은 소문자로 시작하고, 여러 단어일 경우에는 underscore('_')로 구분
- (웬만하면) private으로 선언되고, 필요한 경우에만 protected로 선언
- 멤버 변수에는 직접 접근하지 않고 접근자(getter)와 설정자(setter)를 사용
2) 멤버 함수
- 멤버 함수는 public 선언
- 멤버 함수명은 함수의 역할을 잘 나타내도록 작성 (2(1) 참고)
- 멤버 함수의 정의는 소스 파일(.cpp)에 작성
중요한 것은 이 모든걸 철저히 지키는게 아닌 자신이 속한 프로젝트, 조직의 "스타일을 배우고 맞춰가야함"
※ 참고
https://google.github.io/styleguide/cppguide.html
https://del4u.tistory.com/92