헤더파일
헤더파일을 바르게 사용하는 것으로 코드의 가독성과 크기, 성능에 큰 차이를 만들 수 있다.
define guard
헤더파일이 중복 포함되는 것을 방지하기 위해, 모든 헤더파일 내에 #define 가드를 사용한다
#define 가드의 형식은
<PROJECT>_<PATH>__<FILE>_H_
이며,<PATH>
는 프로젝트 소스 디렉토리로부터의 하위경로로 표시된다.// foo/src/bar/baz.h #ifndef FOO_BAR_BAZ_H #define FOO_BAR_BAZ_H #endif // FOO_BAR_BAZ_H
인라인 함수
- 10줄 이하이면서
for, while, switch
문을 포함하지 않은 함수만 인라인 함수로 정의한다.
- 10줄 이하이면서
-inl.h 파일
- 복잡한 인라인 함수의 정의로 인해 헤더파일이 지저분해질 경우, 인라인 함수만 정의하는
-inl.h
접미어가 붙은 헤더파일을 추가로 사용한다.
- 복잡한 인라인 함수의 정의로 인해 헤더파일이 지저분해질 경우, 인라인 함수만 정의하는
함수 인자 순서
함수의 인자는 입력 인자, 입출력 인자, 출력 인자 순서로 정의한다.
단순히 새로운 변수라고 해서 가장 뒤에 추가하지 않는다.
단, 관련된 함수들과의 일관성을 위해 이 규칙을 따르지 않을 수 있다.
include 형식
시스템 라이브러리 및 다른 라이브러리의 헤더파일을 include할 때는
"<", ">"
를 사용한다.현재 프로젝트의 헤더파일을 include할 때는 쌍 따옴표(
"
)를 사용한다.모든 프로젝트 헤더파일은 현재 디렉터리 기준의 상대경로
".", ".."
를 사용하지 않고, 프로젝트 소스 디렉토리 기준의 하위경로로 표시한다.ex) google-awesome-project/src/base/logging.h는 다음과 같이 #include된다.
#include "base/logging.h"
include 순서
include하는 헤더파일의 순서는
- 시스템 라이브러리의 헤더파일(들)
- 다른 라이브러리의 헤더파일(들)
- 현재 프로젝트의 헤더파일(들)
의 순서로 구역을 나누어 작성하며, 각 구역 내 헤더파일의 순서는 알파벳 순서를 따른다
이를 통해 가독성을 높이고 숨겨진 종속성을 피할 수 있다.
ex) google-awesome-project/src/foo/internal/fooserver.c
// 1) 시스템 라이브러리 #include <sys/types.h> #include <unistd.h> // 2) 다른 라이브러리 #include <other_libs.h> // 3) 현재 프로젝트 #include "base/basictypes.h" #include "base/commandlineflags.h" #include "foo/public/bar.h"
예외) (시스템 의존적인) 조건부 include는 가장 아래에 작성한다.
#include "base/port.h" // LANG_CXX11를 위해 #ifdef LANG_CXX11 #include <initializer_list> #endif // LANG_CXX11
'프로그래밍 언어 > [ Coding Style Guide ]' 카테고리의 다른 글
[ Coding Style Guide ] 05. C언어 - 주석 (0) | 2021.01.20 |
---|---|
[ Coding Style Guide ] 04. C언어 - 변수범위 (0) | 2021.01.20 |
[ Coding Style Guide ] 03. C언어 - 서식 (0) | 2021.01.20 |
[ Coding Style Guide ] 01. C언어 - 이름규칙 (0) | 2021.01.08 |
[ Coding Style Guide ] 00. 코딩 명명법 (2) | 2021.01.08 |