작은숲:위키노트/초보자를 위한 C 언어 강의/코딩 스타일
많은 사람들이 코딩 스타일의 중요성을 강조한다. 다들 알고 있겠지만 C 소스 파일을 컴파일할 때는 하나 이상의 연속된 공백문자는 아무런 의미가 없다. 그렇다고 하더라도, 프로그래머들은 빈줄이나 탭 등을 이용해서 소스 파일을 보기 좋게(?) 만든다. 왜 그렇게 할까? 어차피 소스 파일이라는 것은 프로그램을 만들기 위한 것이 아닌가? 하지만 문제는 그 소스 파일이 지금 한번만 써먹는 게 아니라는 데 있다. 만약 이 프로그램 하나만 만들고 말 것이라면 어떤 식으로 소스 코딩을 하던 상관이 없을 것이다. 하지만, 일반적으로 하나의 소스는 다른 프로그램을 짤 때 참고가 되기도 하고, 또 그 프로그램을 디버깅하거나 수정할 때 다시 들여다 봐야 한다. 이렇게 다시 그 소스를 봤을 때 깔끔하게 정리가 되어 있지 않으면 소스를 분석하기가 상당히 힘들어 진다. 이런 경우를 '가독성'이 낮다고 한다. 다음 두 소스를 비교해 보도록 하자.
int i,array[10]; for(i=0;i<10;i++) array[i]=i*3;int i, array[10];
for (i = 0; i < 10; i++)
array[i] = i * 3;아주 짧은 소스이지만, 어떤가? 두 소스 중에 어떤 것이 훨씬 보기 편할까? 그렇다고 보기 편하게 만들기 위해 특별한 노력을 기울여야 하는 것인가? 현재 여러 종류의 코딩 스타일을 추천하고 있다. K&R 스타일도 있고, ANSI 스타일도 있고, GNU 스타일도 있다. 어떤 식으로 코딩을 할 것인가는 자신이 결정하는 것이다. 다른 사람이 보기 편하면 그만이다. 또 자신의 코딩 스타일에는 일정한 규칙이 있어야 한다. 그래야 소스 분석하기가 좋다. 여기에서는 이렇게, 저기에서는 저렇게 사용한다면 그 소스를 분석하는 사람의 입장에서는 상당히 짜증나는 일이 될 것이다. 어떤 코딩 스타일을 따르던, 아니면 자신만의 스타일을 만들어서 사용하던, 일정한 규칙을 가지고 쓴다면 문제 없다고 생각한다. 그리고 팀 단위로 프로젝트를 진행할 때에는 혼자 코딩하는 것이 아니기 때문에 팀원들간의 협의를 거쳐 동일한 형태의 스타일을 사용하는게 좋다. 실제로 프로젝트를 진행하는 단체에서는 그런 규칙들을 정해서 프로젝트에 참여하는 프로그래머들이 따르도록 하고 있다. 습관이라는 것은 굉장히 무서운 것이다. 일상 생활에서의 습관도 그렇지만 프로그래밍할 때도 한번 습관이 되면 고치기 상당히 힘들다. 처음 프로그래밍을 할 때부터 이런 습관들을 가진다면 나중에 편하다. 다음은 코딩 스타일에 관련된 문서들이다. 시간 나면 한번 읽어보기 바란다.
- https://en.wikipedia.org/wiki/Programming_style
- https://www.kernel.org/doc/Documentation/CodingStyle
- https://google.github.io/styleguide/cppguide.html
- http://www.gnu.org/prep/standards/standards.html
- Recommended C Style and Coding Standards
- C and C++ Coding Style