C 프로그램 들여쓰기 크기 논쟁 from KIDS - slowxslow님의 블로그

1999년도에 이런 일이 있었다니... 중간에 나오는 학부생은 꺼져라는 말에 약간 가슴이 아팠습니다만... 아무튼 Coding Style에 대해 몇자 적어 볼까 합니다.

Quantum Leaps C/C++ Coding Standard

다른 자료들도 들고 있습니다만 이 자료도 상당히 재미있습니다. 특히 TAB과 관련해서는 이 문서에서 이야기하는 요소도 있구나 하는 생각을 들게 해 주었으니까요. 그래서 KIDS의 이야기를 봤을때 문득 떠오르는 문서기도 하였습니다. 뭐 자세히 읽어 보지 않을 분들을 위해 몇군데 발췌를..

In General Rules
No tabs are allowed in the source code because tabs are rendered differently on different devices and bring only insignificant memory savings. Preferably, tabs should be disabled at the editor level. At the very least, they should be replaced by spaces before saving the file.

3.2 Indentation
All indentations must be exactly four (4) spaces to indicate scope.

저 문서에서 "텝사주의"를 주장하는 것은 중요하지는 않습니다. 그보다는 General Rules에서 이야기하는 No Tabs 이야기가 재미있죠. 2005년에 업데이트 되었다고는 하는데 환경에 따라 Tab이 부적절하게 보일 수 있다고 지적하고 있습니다. 그래서 탭을 쓰지 마라고 제가 이야기 하는 것은 아닙니다. 환경에 따라 정하는 것이라고 하고 싶군요.

우선 탭이 8이 되면 사실 프로그래밍을 하면서 너무 쑥쑥 들어가는 경향이 큽니다. 언어에 따라 keyword들이 좀 길면 8정도 들어가도 상관이 없지만 C/C++의 if나 for 같은 statement를 보면 8씩 하기 보단 4가 이쁘긴 합니다. 탭문자의 사용과 관련해서는 한 Statement가 길어질때 들여쓰기를 어쩔수 없이 Space의 도움을 받는 경우가 있는데 이것이 환경에 따라서 어긋날 수가 있는 것이죠. 그래서 No Tabs의 의견은 상당히 흥미롭습니다.

허나 코딩 스타일에서 이 문제를 다룰때 텝8/텝4를 정하는 것이 하나가 다른것 보다 무조건 좋다라는 것 보다는 상황에 따라 정하기 나름이 아닌가 생각이 듭니다. 개발 언어를 어떤 것을 쓰고 개발 툴이나 에디터가 무엇이냐에 따라 이런 부분들이 가변적이라 보는 것입니다. 가령 모든 사람이 같은 에디터를 쓴다면 Tab 문자를 사용해도 무방할 것입니다. 좀더 이야기를 발전 시킨다면 스타일은 스타일일뿐 무엇이 좋다 혹은 KIDS의 논의글에서 이야기 했던 그런 것들이(텝8이는 블라블라 하다, 텝4가 정답이다 등등) 전적으로 적용되지는 않는 다는 것입니다.

오히려 우리가 생각할 것은 프로젝트를.. 혹은 개발팀이나 개발 그룹 등을 유지할때 코딩 스타일을 동일화 하는 것은 중요하다는 점입니다. 텝이나 인덴테이션에 대해 만약 누군가 질문을 한다면(KIDS의 이야기의 시작이죠) "개인적으론 2+2를 선호합니다만 개발그룹의 표준에 충분히 따를 수 있습니다"가 오히려 정답이 아닐까 합니다. (저는 VS 디폴트 셋팅에 따릅니다. --;) 반대로 팀장이라는 사람은 저딴 질문이나 생각할 시간에 Coding Style에 대해 체계적으로 정리하고 있어야 겠죠.

~~~~~
참고. KIDS는 kids.kornet.net 주소로 Telnet을 이용하여 접근할 수 있는 BBS입니다. 특히 원글의 어노니보드에는 간간히 재미있는 글들이...
  1. Commented by yui at 2005.03.29 10:45

    저 쓰레드때문에 픽터님글에는 "여전히 탭은 8로 쓰냐?"라는 리플이 종종 달리죠. ㅎㅎ;; (엄밀히 말하면 "인덴트는 여전히 8로 쓰냐?"가 맞겠죠.)
    그리고 인덴트 크기는 프로그램의 관례를 따르는 것까지는 대찬성이지만, 제발 탭은 8로 했으면 좋겠어요. http://bbs.kldp.org/viewtopic.php?t=28753 Visual Studio 툴만 쓰는 경우엔 별 문제 없겠지만, vi(m),emacs,joe,pico,jedit,eclipse 등이 난립하기 시작하면 대책이 없어요.

  2. Commented by 세라비 at 2005.03.29 12:46

    indentation에 있어서의 tab vs space, number of space 논쟁은 대표적인 쓸모없는 논쟁중의 하나죠. coding style 정할 때, 이 문제를 논의에 붙여보십시오. 절대로 안끝납니다. 말씀하신대로, 취향의 문제이고, 단지 표준을 정할 수만 있으면 되죠. leading programmer나 boss의 취향에 맞춰서 그냥 정해버리면 될 문제일 것 같습니다.

  3. Commented by 박상민 at 2005.03.29 13:21

    좋은글 감사합니다.
    글의 마지막처럼 "자신의 기준을 갖되 남에게 맞출수 있는 센~~스"가 중요하다고 생각합니다. ^^