코딩 스타일

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 값을 바꿔주기만 하고
    함수마지막에 이를 호출 할 것

'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

설정

트랙백

댓글