좋은 코딩 나쁜 코딩
2009. 5. 12. 03:02
저 자 : 박진수
발행 년도 : 2004
출 판 사 : 한빛미디어
--------------------
1학년을 막 마치고, 군대 가기전에 서점에 들러 컴퓨터서적 앞에서 어슬렁 거리다가
막 C를 배운 나같은 사람들이 보면 좋을 것 같은 책이다 싶어서 다음에 사봐야지 하던 책인데
몇년이 지난 후 멤버십 도서관에서 이 책을 다시 보게 되었다.
그 때에 비해서는 코딩 실력이나 경험, 다루는 언어들 등등 많은 발전이 있었지만
내 코드를 남에게 보여준다거나, 남의 코드를 보는 일은 거의 없었기에
코드의 가독성, 효율성에 대해서 깊이 생각해 본 적이 거의 없었던 것 같다.
막상 책을 읽어보니
주석달기, 들여쓰기, 기타 여러 가독성을 위한 한줄 비우기 등까지 포함하여
내가 대부분 잘 하고 있던 코딩법들 이었다.
하지만 완벽할 수는 없는 법!!!
내가 미처 간과하지 못했던 부분들에 대해 알게 된 점들도 많았다.
1. 포인터 연산자를 변수 이름쪽에 붙여서 써라.
1) int* i;
2) int *i;
위 두가지 방법 중, 난 항상 첫번째 방법으로 포인터를 선언하곤 했었다.
int형을 가르키는 포인터 자료형인 i 라는 뜻으로, 나름 내가 알아보기 쉬운 코딩법이라고 생각했다.
int형을 가르키는 포인터 자료형인 i 라는 뜻으로, 나름 내가 알아보기 쉬운 코딩법이라고 생각했다.
int* i, j;
위 코드를 보면 i와 j가 int형 포인터일 것이라고 착각 할 수 있다.
하지만 위 코드는 int형 포인터 i와 int형 j이라는 사실...!
2. 치환 문자열은 반드시 괄호로 씌워라.
하지만 위 코드는 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)