좋은 코딩 나쁜 코딩

2009. 5. 12. 03:02

저       자 : 박진수
발행 년도 : 2004
출  판  사 : 한빛미디어

--------------------

1학년을 막 마치고, 군대 가기전에 서점에 들러 컴퓨터서적 앞에서 어슬렁 거리다가
막 C를 배운 나같은 사람들이 보면 좋을 것 같은 책이다 싶어서 다음에 사봐야지 하던 책인데
몇년이 지난 후 멤버십 도서관에서 이 책을 다시 보게 되었다.

그 때에 비해서는 코딩 실력이나 경험, 다루는 언어들 등등 많은 발전이 있었지만
내 코드를 남에게 보여준다거나, 남의 코드를 보는 일은 거의 없었기에
코드의 가독성, 효율성에 대해서 깊이 생각해 본 적이 거의 없었던 것 같다.

막상 책을 읽어보니
주석달기, 들여쓰기, 기타 여러 가독성을 위한 한줄 비우기 등까지 포함하여
내가 대부분 잘 하고 있던 코딩법들 이었다.

하지만 완벽할 수는 없는 법!!!
내가 미처 간과하지 못했던 부분들에 대해 알게 된 점들도 많았다.

1. 포인터 연산자를 변수 이름쪽에 붙여서 써라.

1) int* i;
2) int *i;

위 두가지 방법 중, 난 항상 첫번째 방법으로 포인터를 선언하곤 했었다.
int형을 가르키는 포인터 자료형인 i 라는 뜻으로, 나름 내가 알아보기 쉬운 코딩법이라고 생각했다.

int* i, j;

위 코드를 보면 i와 j가 int형 포인터일 것이라고 착각 할 수 있다.
하지만 위 코드는 int형 포인터 i와 int형 j이라는 사실...!

2. 치환 문자열은 반드시 괄호로 씌워라.

#define SORT(n) n*n

위의 매크로 함수를 보면 n*n 부분이 괄호로 씌워져 있지 않다.
이 때

x = SORT( 1+2 );

x 에는 어떤 값이 들어갈까? 3*3 인 9의 값이 들어갈 것이라고 생각했는데
괄호의 부재로 인하여

x  = 1 + 2 * 1 + 2 = 1 + ( 2 * 1 ) + 2

결국 x 에는 5라는 값이 들어가게 되는 일이 발생한다.
아래와 같이 치환문자열은 반드시 괄호로 채우도록 하자.

#define SORT(n) (n*n)

박상근 여가생활/책