emacs 21.3을 수년 째 잘 써오다가 22 버전으로 업그레이드 했다. 아무래도 gdb와의 연동기능에서는 같은 gnu 프로그램이라서 그런지 vim보다는 emacs가 훨씬 매끄럽다. 그동안 잘 사용해온 감사로 내친 김에 gnu에 메뉴얼도 하나 주문했고...
설정파일을 정리하다가 c언어의 코딩스타일과 gnu 코딩스타일에대한 Linus Torvalds글을 인터넷에서 읽게 되었다. emacs는 c의 기본 코딩스타일이(cc-mode) gnu style로 설정이 되어있다. 그동안 아무 생각없이 책에서 보아봐 온 대로만 코딩을해왔는데 이런 것도 표준이란게 있었던 모양.
제일먼저 원조격인 Kernighan and Richie style. 흔히 줄여서 k&r style이라고 한다. 백마디 말 보다는 한줄의 코딩이 낫다.
int ret function_name(int arg1, int arg2)아마도 많은 사람들이 익숙한 형태일 것이다. 특징이라면 함수를 정의할때는 { 를 따로 한줄에 써주지만 그 외에는 맨 끝에 붙여 써준다는 거하고 들여쓰기를 5칸한다는 점.
{
while (condition){
some code...;
}
return 0;
}
int main(int argc, char *argv[]){
function_name(...);
return 0;
}
k&r 스타일의 계승자는 Linus Torvalds이다. 리눅스 커널소스가 바로 k&r 스타일을 따르고 있다. 한 가지 정통 k&r과 다른 점이 있다면 들여 쓰기를 5칸이 아닌 8칸을 한다는 점. Linus는 그 이유를 하루에 30시간 이상(?) 코드를 보고 있으면 8칸 들여쓰기가 얼마나 도움이 되는지 알 수 있다고 한다. 30 시간이라...
이에 반해 gnu 스타일은 좀 독특하다. 아래 코드는 Wikipedia에서 퍼왔다.
int가장 먼저 눈에 띄는 것이 우선 들여쓰기가 2자리 밖에 되지 않는 다는 점이다. 리턴 값을 따로 한줄에 적어 주는 것도 특이하다. 그런데 여기에 대한 Linus의 반응은 의외로 차갑다.
main (int argc, char *argv[])
{
fetch_gizmo (&foo, argv[1]);
check:
if (foo.type == MOOMIN)
puts ("It's a moomin.");
else if (foo.bar < GIZMO_SNUFKIN_THRESHOLD
|| (strcmp (foo.class_name, "snufkin") == 0)
&& foo.bar < GIZMO_SNUFKIN_THRESHOLD / 2)
puts ("It's a snufkin.");
else
{
char *barney; /* Pointer to the first character after */
the last slash in the file name. */
int wilma; /* Approximate size of the universe. */
int fred; /* Max value of the `bar' field. */
do
{
frobnicate (&foo, GIZMO_SNUFKIN_THRESHOLD,
&barney, &wilma, &fred);
twiddle (&foo, barney, wilma + fred);
}
while (foo.bar >= GIZMO_SNUFKIN_THRESHOLD);
goto check;
}
return 0;
}
"I'd suggest printing out a copy of the GNU coding standards, and not read it. Burn them, it's a great symbolic gesture" <http://pantransit.reptiles.org/prog/CodingStyle.html>
Linus가 외모와는 다르게 의외로 고집도 있고 강단이 있는 사람인 모양이다. 언젠가 들었던 테넌바움과의 마이크로 커널에 대한 논쟁도 그렇고...
내 코딩스타일은 k&r에 가까운 것 같다. 다만 들여쓰기는 4글자 정도면 적당한 듯 하지만 이 기회에 아예 정통 k&r스타일로 바꾸는 것도 괜찮겠지 뭐.
그러나 저러나 터미널에 쓰기 적당한 한글 폰트를 빨리 찾아야 할텐데... IT 분야에서도 우리나라의 특징이 나타나는 듯 하다. 신기술에는 민감한데 기본은 아직 모자란다는 느낌.
0
Comment:
최근 게시물
