코딩 스타일과 관련된 사항
쓸데 없는 로컬 변수를 남겨두면, 다른 사람에게 혼란을 준다.
'', 0x20, 040. 이런 식으로 사용하면 좋지 않다.
특히나 void* 형식으로 데이터를 넘긴 다음에 캐스팅하는 것은 위험하기도 하거니와, 코드를 보기 어렵게 만든다.
사람이 이해하기 어렵다.
switch (menu) { case 1: ... case 2: ... }
const int COPY = 1; const int PASTE = 2; switch (menu) { case COPY: ... case PASTE: ... }
if (a) { if (b) { if (c) { good(); } else { error3(); } } else { error2(); } } else { error1(); }
위와 같은 코드는 다음과 같이 만드는 것이 훨씬 보기 쉽다.
if (!a) { error1(); return; } if (!b) { error2(); return; } if (!c) { error3(); return; } good();
위의 예 같은 경우에는 예외처리도 좋은 해결 방안이 되겠다.
가로 스크롤은 힘들다.
a=a++; f(a++,a++);
*++b ? (*++b + *(b-1)) : 0
음… 개인적으로 뼈아픈 내용이다. 옛날에 if 구문 뒤에다 괄호를 안 붙였다가, 돈 복사 버그를 만들어 내어 빽섭한 적이 있다. 일부러 그러는 사람이야 없겠지만, 들여쓰기마저 이상하게 하는 경우, 상당히 짜증나는 코드를 만들 수 있다.
if ( a ) if ( b ) x=y; else x=z;
대충 이런 식이였던 듯 한데… :(
왜 파이썬에 강제 들여쓰기가 있겠는가. 원래 여러 사람이 코드를 보려면 들여쓰기는 스페이스로 하는 게 정석이다. 하지만 매번 스페이스바 누르기가 귀찮다면, 최소한 프로그램 팀 안에서는 탭 사이즈를 1가지로 정해두고 사용해라. 이 사람은 2 탭, 저 사람은 4 탭, 이 따위로 하면 코드 정말 보기 어려워진다.
또한 문자열 선언 안에다 탭 캐릭터를 쓰면 좋지 않다. “\t”를 사용해라.
특히 중첩된 매크로를 여러 헤더 파일에다 분리해서 선언하는 경우, 매우 괴롭다.
주석 잘 다는 것은 좋은데, 다음과 같은 정도의 주석이 함수마다 존재하는 코드가 있다면 과연 보기 쉬울까?
/*
/* Procedure Name:
/*
/* Original procedure name:
/*
/* Author:
/*
/* Date of creation:
/*
/* Dates of modification:
/*
/* Modification authors:
/*
/* Original file name:
/*
/* Purpose:
/*
/* Intent:
/*
/* Designation:
/*
/* Classes used:
/*
/* Constants:
/*
/* Local variables:
/*
/* Parameters:
/*
/* Date of creation:
/*
/* Purpose:
*/