http://btd86.tistory.com/73 - C++ 코딩 스타일
코딩 규칙
코딩 할때 규칙을 정하기로 했습니다.
1. 제어문은 아래와 같이 소괄호를 한칸 띈다.
if (i == 0)
while (TRUE)
switch (i)
for (int i = 0; i < 10; i++)
2. 괄호에 빈칸을 삽입 하지 않는다.
if ( i == 0 ) (X) , if (i == 0) (O)
GetLogger()->Info( _T("Test") ); (X), GetLogger()->Info(_T("Test")); (O)
if ( (i == 0) || (j == 1) ) (X), if ((i == 0) || (j == 1)) (O)
3. switch ~ case 문
switch ()
{
case 1:
break;
case 2:
break;
case 3:
break;
}
4. 반환 값처리는 바로바로
// no
if (hWnd != NULL)
{
}
else
{
return false;
}
// yes
if (hWnd == NULL)
return false;
5. 빈줄 탭이나 공백문자 제거(trim)
6. 전역 변수는 'g_' 을 사용한다.
7. 클래스의 멤버 변수는 'm_' 을 사용한다.
8. 포인터(*) 및 참조(&) 표기는 변수 앞에 붙여서 선언한다.
9. #define enum 및 const 는 대문자와 단어 사이에 '_' 를 붙인다.
10. 각 변수 및 함수의 이름은 대문자로 시작한다.
int nTypeMax, char szFileInfomation, (O)
int ntype_max, char szfile_infomation (X)
11.#define 보다 const 형 또는 static const 형을 되도록 사용한다.
static const int MAX_CARD = 1000
12.BOOL형 역방향형 변수는 사용하지 않는다.
BOOL bError (O) BOOL bNoError (X)
13.bool, true, false 는 사용하지 않고 BOOL, TRUE, FALSE 로 사용한다.
(BOOL등은 4바이트 자료형이고 bool등은 1비트(실제로는 1바이트) 자료형이다. 32비트 운영체계의 경우 속도와 비교하는데 걸리는 성능 부분에도 유리하고 알아보기도 좋기 때문에 위와 같은 대문자로 된 자료형을 사용한다.)
14.함수의 인자는 NULL 입력이 가능하다면 포인터(*)를 이용하고 그렇지 않다면 참조(&)을 사용한다.
(포인터 방식의 최대 단점은 NULL을 원하지 않은 경우에도 NULL이 입력될 수 있다는 점이다. 따라서 이러한 것을 근본적으로 막기 위해서는 NULL이 입력되지 않기를 원하는 함수의 인자는 참조를 사용한다.)
15.변수 또는 함수 선언 시 TAB으로 정렬하지 않는다.
(TAB문자를 이용한 정렬은 보기가 좋기는 하지만 결국 전체 스타일은 망가뜨린다. 또한 특정 변수의 추가 / 제거시 다른 변수들의 탭이 엉클어져 다시 정돈하는 과정이 필요하므로 불필요한 편집 작업을 늘린다.)
16.일반적으로 i++ 은 사용이 가능하지만 ++i 는 사용하지 않는다.
(속도를 위해서 후자를 사용하는 사례들이 가끔 있지만 사실상 컴파일러의 최적화로 인하여 위 내용의 속도의 차이가 존재하지 않는다. 따라서 가독성과 통일성을 이유로 전자만 사용한다.)
코딩 규칙
코딩 할때 규칙을 정하기로 했습니다.
1. 제어문은 아래와 같이 소괄호를 한칸 띈다.
if (i == 0)
while (TRUE)
switch (i)
for (int i = 0; i < 10; i++)
2. 괄호에 빈칸을 삽입 하지 않는다.
if ( i == 0 ) (X) , if (i == 0) (O)
GetLogger()->Info( _T("Test") ); (X), GetLogger()->Info(_T("Test")); (O)
if ( (i == 0) || (j == 1) ) (X), if ((i == 0) || (j == 1)) (O)
3. switch ~ case 문
switch ()
{
case 1:
break;
case 2:
break;
case 3:
break;
}
4. 반환 값처리는 바로바로
// no
if (hWnd != NULL)
{
}
else
{
return false;
}
// yes
if (hWnd == NULL)
return false;
5. 빈줄 탭이나 공백문자 제거(trim)
6. 전역 변수는 'g_' 을 사용한다.
7. 클래스의 멤버 변수는 'm_' 을 사용한다.
8. 포인터(*) 및 참조(&) 표기는 변수 앞에 붙여서 선언한다.
9. #define enum 및 const 는 대문자와 단어 사이에 '_' 를 붙인다.
10. 각 변수 및 함수의 이름은 대문자로 시작한다.
int nTypeMax, char szFileInfomation, (O)
int ntype_max, char szfile_infomation (X)
11.#define 보다 const 형 또는 static const 형을 되도록 사용한다.
static const int MAX_CARD = 1000
12.BOOL형 역방향형 변수는 사용하지 않는다.
BOOL bError (O) BOOL bNoError (X)
13.bool, true, false 는 사용하지 않고 BOOL, TRUE, FALSE 로 사용한다.
(BOOL등은 4바이트 자료형이고 bool등은 1비트(실제로는 1바이트) 자료형이다. 32비트 운영체계의 경우 속도와 비교하는데 걸리는 성능 부분에도 유리하고 알아보기도 좋기 때문에 위와 같은 대문자로 된 자료형을 사용한다.)
14.함수의 인자는 NULL 입력이 가능하다면 포인터(*)를 이용하고 그렇지 않다면 참조(&)을 사용한다.
(포인터 방식의 최대 단점은 NULL을 원하지 않은 경우에도 NULL이 입력될 수 있다는 점이다. 따라서 이러한 것을 근본적으로 막기 위해서는 NULL이 입력되지 않기를 원하는 함수의 인자는 참조를 사용한다.)
15.변수 또는 함수 선언 시 TAB으로 정렬하지 않는다.
(TAB문자를 이용한 정렬은 보기가 좋기는 하지만 결국 전체 스타일은 망가뜨린다. 또한 특정 변수의 추가 / 제거시 다른 변수들의 탭이 엉클어져 다시 정돈하는 과정이 필요하므로 불필요한 편집 작업을 늘린다.)
16.일반적으로 i++ 은 사용이 가능하지만 ++i 는 사용하지 않는다.
(속도를 위해서 후자를 사용하는 사례들이 가끔 있지만 사실상 컴파일러의 최적화로 인하여 위 내용의 속도의 차이가 존재하지 않는다. 따라서 가독성과 통일성을 이유로 전자만 사용한다.)
댓글
댓글 쓰기