. 좋은 코딩 스타일

코딩 스타일은 코드의 내용에 대한 규칙이 아니라 코드를 작성하는 형식에 관한 문제이므로 강제적인 의무 사항이 아니다. 읽기 쉽고 관리하기 좋은 스타일이라면 별 문제가 없고 여기에 팀 작업에 별다른 방해가 되지 않는다면 더 바랄 것이 없다. 어떤 스타일을 선택할 것인가는 개인의 자유이되 한번쯤 자신의 스타일을 되돌아보고 바람직한 스타일을 선택한 후 일관되게 지키는 것이 중요하다. 오락 가락 하는 것보다 분명한 자기 스타일을 가져야 한다.

코딩 스타일은 개인의 자유이기 때문에 특별한 이유가 없다면 자신의 스타일을 강요하거나 서로를 비방해서는 안된다. 남이 나의 코딩 스타일을 납득할만한 이유없이 비판한다면 기분이 상하듯이 나 또한 마찬가지이므로 상대의 스타일을 존중해야 한다. 나와 다른 스타일의 코드도 잘 읽을 수 있어야 하는데 스타일이 달라 코드가 어렵다고 불평하는 것은 치사한 변명에 불과하다. 남의 코드를 수정해야 할 때 가급적이면 그 사람의 취향을 존중해야 하며 나와는 좀 스타일이 맞지 않더라도 소스 주인의 스타일을 따르는 것이 올바른 에티켓이다.

만약 스타일 차이가 정 문제가 된다면 서로 스타일을 맞춘 후 작업하는 것이 좋다. 그래서 각 개발사는 코딩 스타일에 대한 지침서를 구비해 놓고 팀원들이 지침대로 코드를 작성하도록 조율하기도 한다. 팀 작업을 할 때는 전체 소스를 팀이 공유하고 같이 관리해야 하므로 전사적인 코딩 스타일을 준주해야 할 의무가 있다. 개인의 자유라 하여 모두가 자기 방식대로 코드를 작성한다면 공유되는 소스의 스타일이 일치하지 않아 여러 가지 문제들이 불거져 나오므로 자기 취향과 맞지 않더라도 지침에 따라야 한다.

최근에는 지정한 코딩 스타일에 따라 소스를 재구성하는 유틸리티들도 많이 발표되어 있고 컴파일러의 편집기들도 여러 가지 스타일을 지원하고 있어 일관된 스타일을 유지하기가 더 쉬워졌다. 비주얼 C++도 Tab, Shift+Tab으로 한꺼번에 들여쓰기, 내어쓰기를 지원하며 Alt+F8은 선택 블록의 들여쓰기를 일괄 조정해 준다. 더 최신의 편집기는 미리 코딩 스타일을 선택해 놓으면 지정한 스타일대로 코드를 자동 재배치하는 기능까지 마련되어 있다.

마지막으로 이 책에서 사용하는 코딩 스타일을 점검해 보자. 초급 개발자들은 흔히 자신이 보던 책이나 자료의 스타일 영향을 많이 받으므로 이 책의 스타일에 대해 장단점을 솔직하게 논할 필요가 있다. 가장 큰 특징은 중괄호 스타일이 K&R 형식으로 통일되어 있다는 점인데 여는 중괄호는 불록 선두의 끝에 붙인다. 키워드와 괄호는 떼고 함수와 괄호는 붙이며 들여쓰기는 탭폭 4를 일관되게 적용하고 있다. 빈 줄도 필요한 곳에는 적당히 삽입하는 편이며 변수명도 평이하게 붙였다.

가장 크게 문제되는 점은 연산자와 피연산자 사이, 인수 목록 사이에 공백을 잘 넣지 않는다는 점인데 피연산자나 인수가 복잡한 수식인 경우만 가끔씩 공백을 활용하는 편이다. 공백을 타이프하기가 귀찮고 공백이 없어도 별로 답답함을 느끼지 않으며 오히려 과다한 공백이 너무 썰렁해 보이는 것 같다. 솔직히 별로 자랑은 아니며 일반적으로 권장되는 스타일에 역행하는 방식이므로 절대로 본받지 말기 바란다.

다른 부분은 별 문제가 없지만 K&R 스타일이 요즘 유행에 별로 부합되지 않고 공백을 잘 넣지 않는다는 것이 스스로의 단점임을 본인도 알고 있다. 그러나 변명을 하자면 오랫동안 출판을 하다 보니 이런 습관을 알게 모르게 강요받아왔음이 사실이다. 좁은 지면에 많은 소스를 보여야 하고 그러다 보니 { 괄호가 한 줄을 차지하는 것을 도저히 용납하지 못하는 것이다. 내용은 그대로 유지하고 { 괄호만 내려도 이 책은30페이지 정도 늘어나 버린다. 또한 지면은 기껏해야 90컬럼밖에 안되므로 수평으로 너무 길어져서는 안되며 그러다 보니 공백을 넣는데 인색해질 수밖에 없다.

일관된 스타일을 지키기는 하지만 나는 내 스타일이 만인이 본받을만큼 좋다고 생각하지 않는다. 여러분들은 이 책의 코딩 스타일 중 마음에 드는 부분만 받아들이고 그렇지 않은 부분은 비판적으로 수용하기 바란다. 코딩 스타일은 손가락이 기억하는 습관이기 때문에 문법을 배울 때 즈음부터 미리 정해서 익숙하게 훈련하는 것이 바람직하다. 한번 버릇을 잘못 들이면 고치기 정말 어렵다.