글
코딩 스타일
Programming/C Language
2009. 8. 15. 18:08
버그가 생기지 않는 코딩 습관
1. 하나의 지역 변수를 여러 용도로 사용하지 말 것
2. 함수의 인자를 다른 목적으로 이용하지 말 것
3. malloc() 과 free()는 서로 가까이 둘 것
- malloc()에 대응하는 free() 의 대응 관계가 명백하게 보이도록 소스코드를 작성하는 것이 좋다.
초기화 함수에서 malloc()으로 메모리를 할당한다면, 종료 처리 함수를 두어 free() 하는 코드를 작성
4. 구조체는 생성과 동시에 초기화하라
- 구조체에 메모리의 할당과 멤버초기화 하는 함수를 두는 것이 좋다.
- 구조체의 초기화는 memset 을 사용 struct pointer *p; memset( p, 0, sizeof( *p ) );
주의 : sizeof( p ) 를 사용할 경우 4바이트 만 초기화 됨
5. 포인터는 NULL 로 초기화 하라
6. 점검하기 쉬운 스타일을 취할 것
int get_x_value( const struct point *p ) ~;
int set_x_value( struct point *p, int x ) ~;
버그가 발생했을 때 대처하기 쉬운 코딩 스타일
1. 반납한 포인터는 NULL로 리셋
- 반환한 메모리에 접근해서 프로그램이 죽는다. ( OS에서 잘못된 참조 오류가 발생하여 프로세스가
중단 or 시스템이 중단 되도록 고안 )
- 해제 이전에 메모리 체크 ( 이와 같은 스타일은 항상 일관되게 작성 하도록 한다 )
if( p->name )
free( p->name );
else
fprintf( stderr, "p->name is NULL.\n");
2. 함수의 앞부분에서 인자를 검사할 것
- 각 인자가 NULL 인지 체크하기
추격을 위한 코딩 스타일
1. 함수는 가급적으로 한 줄에 다 적어라
- 함수가 길어질 경우,함수 선언을 여러줄에 나누어 쓰게 되는데 grep로 검색할 경우 한 줄 씩 보여주므로
함수의 원형을 한번에 볼수 없다.
수정과 확인이 쉬운 코드
1. 중괄호를 생략하지 말 것
2. return을 한 군데로 몰아둘 것
func()
{
int return_value;
return_value = -1;
return (return_value);
}
와 같이 중간에 여러 조건 검사가 있고 return을 해야 할 경우 return value 값을 바꿔주기만 하고
함수마지막에 이를 호출 할 것
1. 하나의 지역 변수를 여러 용도로 사용하지 말 것
2. 함수의 인자를 다른 목적으로 이용하지 말 것
3. malloc() 과 free()는 서로 가까이 둘 것
- malloc()에 대응하는 free() 의 대응 관계가 명백하게 보이도록 소스코드를 작성하는 것이 좋다.
초기화 함수에서 malloc()으로 메모리를 할당한다면, 종료 처리 함수를 두어 free() 하는 코드를 작성
4. 구조체는 생성과 동시에 초기화하라
- 구조체에 메모리의 할당과 멤버초기화 하는 함수를 두는 것이 좋다.
- 구조체의 초기화는 memset 을 사용 struct pointer *p; memset( p, 0, sizeof( *p ) );
주의 : sizeof( p ) 를 사용할 경우 4바이트 만 초기화 됨
5. 포인터는 NULL 로 초기화 하라
6. 점검하기 쉬운 스타일을 취할 것
int get_x_value( const struct point *p ) ~;
int set_x_value( struct point *p, int x ) ~;
버그가 발생했을 때 대처하기 쉬운 코딩 스타일
1. 반납한 포인터는 NULL로 리셋
- 반환한 메모리에 접근해서 프로그램이 죽는다. ( OS에서 잘못된 참조 오류가 발생하여 프로세스가
중단 or 시스템이 중단 되도록 고안 )
- 해제 이전에 메모리 체크 ( 이와 같은 스타일은 항상 일관되게 작성 하도록 한다 )
if( p->name )
free( p->name );
else
fprintf( stderr, "p->name is NULL.\n");
2. 함수의 앞부분에서 인자를 검사할 것
- 각 인자가 NULL 인지 체크하기
추격을 위한 코딩 스타일
1. 함수는 가급적으로 한 줄에 다 적어라
- 함수가 길어질 경우,함수 선언을 여러줄에 나누어 쓰게 되는데 grep로 검색할 경우 한 줄 씩 보여주므로
함수의 원형을 한번에 볼수 없다.
수정과 확인이 쉬운 코드
1. 중괄호를 생략하지 말 것
2. return을 한 군데로 몰아둘 것
func()
{
int return_value;
return_value = -1;
return (return_value);
}
와 같이 중간에 여러 조건 검사가 있고 return을 해야 할 경우 return value 값을 바꿔주기만 하고
함수마지막에 이를 호출 할 것
'Programming > C Language' 카테고리의 다른 글
#include 와 #define 의 순서 (0) | 2009.08.18 |
---|---|
매크로 함수 (0) | 2009.08.18 |
#ifndef ~ #define ~ #endif (0) | 2009.08.15 |
헤더파일과 소스파일 (0) | 2009.08.02 |
모듈화 프로그래밍 - 2 (0) | 2009.06.28 |