프겔의 영원한 명저 - "유지보수가 어렵게 코딩하는 방법" 에 따르면
지나치게 친절한 주석과 높은 가독성을 지닌 프로그래머는 쉽게 짤린다는 말이다 ㅋ
몇가지 팁을 소개하고자 한다.
태아 작명법의 새로운 용도
태아 작명법 서적을 구입하자. 그러면 변수명을 뭐로 지어야 할지에 대한 고민을 덜 수 있을 것이다. Fred는 멋진 이름이며
입력하기도 쉽다. 입력이 쉬운 변수명을 원한다면 asdf를 사용해 보기 바란다.
단일 문자 변수명
변수명을 a, b, c 등으로 정한다면 간단한 텍스트 편집기로 해당 인스턴스를 검색하는데 애를 먹게 된다. 뿐만 아니라 그 변
수가 무엇에 쓰이는 것인지 추측할 수 없게 방지하는 역할도 한다. 포트란(FØRTRAN)에서는 오랫동안 I, j, k를 인덱스 변
수로 사용해왔다. 혹시라도 이러한 훌륭한 전통을 조금이라도 깨뜨리려는(예를 들어, ii, jj, kk 등으로 이름을 변경하려는)
사람이 있는가? 스페인 종교재판에서 이교도에게 어떠한 형벌을 가했는지를 그에게 경고하자.
창의적 오타
어쩔 수 없이 뭔가를 설명하는 변수명이나 함수명을 사용해야 하는 상황이라면 오타라는 무기를 선택하자. 몇몇 함수명과
변수명에 오타를 내고 다른 곳에서는 오타를 사용하지 않는다면(예를 들어, SetPintleOpening과 SetPintalClosing처럼)
grep이나 IDE 검색 기술을 효과적으로 무력화할 수 있다. 이 방법은 생각보다 놀라운 효과를 발휘한다. 각기 다른 theatres/
theaters(둘 다 극장을 의미)에 tory나 tori같이 국제적인 취향도 추가해본다.
밑줄(underscore)은 진정한 친구다
_와 __를 식별자로 사용하자.
확장 아스키(Extended ASCII)
ß, Ð, n 등과 같은 확장 아스키 문자도 변수명에 사용할 수 있다는 사실을 잊지말자. 간단한 편집기에서는 복사/붙여넣기
말고는 확장 아스키 문자를 입력할 수 있는 방법이 없다.
정말 멋진 이름
의미상으로 전혀 관계없는 이름을 변수명으로 사용해보라.
marypoppins = (superman + starship) / god;
이 글을 읽는 사람은 자신도 모르게 단어의 뜻에 더 집중하게 되고, 실제 로직은 이해하기가 어려워진다.
쉽게 찾지 못하게 숨겨라
16진수 값 $0204FB를 할당할 상수 변수명으로 blue 대신 LancelotsFavouriteColour와 같은 이름을 사용하라. 화면에는
완전한 파랑색이 나타나겠지만, 유지보수 프로그래머는 0204FB값을 판독(아마 그래픽 도구를 이용해서)해야 의미를 파악
할 수 있을 것이다. 몬티 파이썬의 성배(Monty Python and the Holy Grail)라는 1975년 영국 영화를 좋아하는 광팬이라
면 랜슬롯(Lancelot)이 좋아하는 색이 파랑색이라는 사실쯤은 금방 알아차릴 수도 있을 것이다. 몬티 파이썬의 성배 영화
전체 내용을 기억하지 못하는 유지보수 프로그래머가 있다면 프로그래머로써 자질이 없는 분이라고 생각할 수 밖에 없다.
주석으로 위장한 코드와 코드로 위장한 주석
실제로는 주석처리 되었지만 얼핏 보면 주석처리 되지 않은 것처럼 보이게 할 수 있다.
for(j=0; j<array_len; j+ =8)
{
total += array[j+0 ];
total += array[j+1 ];
total += array[j+2 ]; /* 속도 향상을 위해
total += array[j+3]; * 루프의 코드를 길게
total += array[j+4]; * 펼쳐 놓았다.
total += array[j+5]; */
total += array[j+6 ];
total += array[j+7 ];
}
네임스페이스
C는 Struct/union와 typedef struct/union의 네임스페이스를 구별한다(그러나 C++에서는 구별하지 않는다). 구조체든 유
니언 네임스페이스든 같은 이름을 사용하자. 가능하다면 둘이 서로 호환되게 하자.
typedef struct {
char* pTr;
size_t lEn;
} snafu;
struct snafu {
unsigned cNt
char* pTr;
size_t lEn;
} A;
매크로 정의를 숨겨라
자질구레한 주석을 이용해 매크로 정의를 숨길 수 있다. 보통 프로그래머라면 지루한 주석을 끝까지 읽지 않으므로 절대 매
크로를 찾을 수 없다. 매크로를 만들 때는 다음과 같이 특이한 동작을 써서 평범한 할당문처럼 보이게 만들어야 한다.
#define a=b a=0-b
너무 긴거 같아 이정도만 알려주겠다
존나 미친듯 약 빨았네 ㅋ
모든 함수를 goto 로 만들어 쓰면 좋다. 1000라인짜리 소스코드에 goto 20개 정도 있으면 아무도 못알아봄.. 나도 시간 지나면 못알아봄..
짤리지는 않겠지만 존나 쳐맞을듯
ㅋㅋ존나재미있넼ㅋ
미친놈 ㅋㅋㅋㅋㅋㅋ
zzzzzzzzㅋㅋㅋㅋㅋㅋㅋㅋ
아 존나웃ㄱ네 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
현실을 모르는 등신들 ㅋ