책 제목을 보시고 무슨 생각이 드시나요?
개발자 분들은 조금 의아해 하실지도 모르겠습니다.
유지보수를 어렵게 코딩한다? 유지보수를 쉽게 코딩한다가 아니고??
네.. 맞습니다. 말그대로 유지보수 어렵게 코딩하는 방법을 알려주는 책입니다.
그럼 왜!! 왜 그런걸 알려주는 건데!!
-평생 개발자로 먹고 살 수 있다- 라는 부제가 달려있는 걸 보니.. 아마 코딩 어렵게 해서 남들이 알아보지 못하게 하여 자기의 몸값을 올리는 방법을 알려주려나 봅니다...ㅡ.ㅡ;; (네 맞습니다.!!!)
일단 개발자 분들은 재미로라도 한 번 읽어보시기를 추천합니다. (책 내용이 많은 것도 아니고, 무료라 구입 비용도 없습니다. 포스팅 맨 아래에 보시면 책을 다운로드 받으실 수 있는 링크를 걸어두었습니다.)
책 내용도 인정사정 없습니다.ㅎㅎ
이 책은 다른 설명을 드리는 것보다는 보면서 배꼽잡게 만든 내용들 일부를 추려서 올려보도록 하겠습니다.^^ 재미있는 글들이 훨씬 더 많습니다. ㅎㅎㅎ
아래는 실제 책 내용을 발췌한 것입니다. (글 뒤에 짧막한 글 또는 ㅡ.ㅡ; ㅋㅋㅋㅋ 이런 표현은 제가 붙인 것입니다. ㅎㅎ)
... 하나의 임시 변수를 전혀 관련이 없는 다양한 상황에서 사용할 수 있다(변수를 재사용함으로써 스택 슬롯을 절약하는 것처럼 위장할 수 있다.) ... ㅡ.ㅡ;
삼천포로 인도하는 이름
메소드의 이름을 의미하는 것보다 더 많은(혹은 더 적은) 동작을 수행하도록 프로그래밍하자. 예로 isValid(x)라는 메소드에 기능을 추가해 x값을 이진수로 변환하고 결과를 데이터베이스에 저장하도록 구현한다면 모두가 깜짝 놀랄 것이다. ... ㅡ.ㅡ;
쉽게 찾지 못하게 숨겨라
16진수 값 $0204FB를 할당할 상수 변수명으로 blue 대신 LancelotsFavouriteColour와 같은 이름을 사용하라. 화면에는 완전한 파랑색이 나타나겠지만, 유지보수 프로그래머는 0204FB값을 판독(아마 그래픽 도구를 이용해서)해야 의미를 파악할 수 있을 것이다. 몬티 파이썬의 성배Monty Python and the Holy Grail라는 1975년 영국 영화를 좋아하는 광팬이라면 랜슬롯Lancelot이 좋아하는 색이 파랑색이라는 사
실쯤은 금방 알아차릴 수도 있을 것이다. 몬티 파이썬의 성배 영화 전체 내용을 기억하지 못하는 유지보수 프로그래머가 있다면 프로그래머로서 자질이 없는 분이라고 생각할 수 밖에 없다. ㅋㅋㅋㅋㅋ
길고 비슷한 변수명
... 따라서 swimmer와 쉽게 구별하기 어려운 swirnrner도 좋은 변수명이다. ... ????
문제점
코드의 문제점을 문서화하지 않는다. 클래스에 버그가 있을 수 있다는 사실을 발견했으면 혼자만의 비밀로 간직한다. 코드를 어떻게 재조직하거나 재작성해야 할지 아이디어가 떠올랐을지라도 문서로 남겨놓지 않는다. ... ..;;;;
폄하하는 말을 주석에 사용하기
외부 회사와 유지보수 계약을 체결할 수 없도록 다른 소프트웨어 선도 업체를 폄하하는 글을 추가한다. 특히 현재 회사와 계약할 수 있는 가능성이 있는 회사를 공격할수록 좋다. 예를 들면, 다음과 같다.
/* 내부 루프 최적화 Software Services Inc.,의 굼뱅이들은 아래와 같은 코드를 꿈에도 몰랐겠지. 그 녀석들은 아마 답답한 <math.h>의 기능을 이용해서 50배나 느리고 메모리도 많이 사용했을 꺼야. */ 으아아아아~~
검증을 멀리하라
입력 데이터에 대한 어떤 종류의 불일치 검사나 정확성 검사를 수행하지 않는다. 즉, 우리는 회사 장비를 온전히 신뢰하고 있으며 모든 프로젝트 파트너와 시스템 운영자를 신뢰하는 완벽한 팀원임을 보여줄 수 있다. 입력 데이터가 이상하거나 문제가 있는 듯 보이더라도 항상 합리적인 값을 반환하기 위해 노력해야 한다. -_-;;;
테마와 변형
하나의 메소드에 파라미터를 사용하기보다는 되도록이면 여러 메소드를 만드는 것이 좋다. 예를 들어, 왼쪽, 오른쪽, 가운데 정렬을 의미하는 상수를 파라미터로 넘겨줄 수 있는 setAlignment(int alignment)보다는 setLeftAlignment, setRightAlignment, setCenterAlignment와 같이 세 개의 메소드를 정의하는 것이 바람직하다. ...
퉁퉁 부은 클래스
중요하지 않고 잘 알려지지 않은 메소드와 속성을 모든 클래스에 포함시킴으로써 외부에 둔감한 클래스를 만들 수 있다. 일례로, 천체 기하학적 궤도를 정의하는 클래스에 해수면 조류 스케쥴과 크레인Crane 날씨 모델을 구성하는 속성을 포함할 수 있다. 이와 같은 기법으로 클래스에 수많은 기능을 정의할 수 있을 뿐만 아니라 시스템에서 필요한 부분을 검색하는 작업을 서울에서 김서방 찾기처럼 힘들게 만들 수 있다. ... (김서방 찾아 봅시다..;;;)
읽을 수 없는 C
인터넷의 읽을 수 없는 C 경연대회에 참석하고 스승님의 책상다리 근처에 앉아 경청하라 ... (실제 있는 대회야???!!!)
긴 줄
가능하면 많은 내용을 한 줄에 담으려 노력하라. 이 기법은 임시 변수를 줄이고, 줄바꿈 문자나 공백 문자를 제거함으로써 소스파일 크기를 줄이는 효과를 제공한다. ... ㅡ,.ㅡ;;
언제 예외를 사용해야 하는가?
예외가 발생하지 않는 상황에서만 예외를 사용하라. ... ㅋㅋㅋ
테스트
프로그램에 버그를 남겨둠으로써 유지보수 프로그래머에게도 재미있는 일거리를 제공해야 한다. 잘 만든 버그라면 어디서 어떻게 발생했는지에 관한 단서를 남기지 않는다. ... (알았다..)
세상이 무너져도 성능 테스트를 하지 않는다
프로그램이 좀 느리다고? 고객에게 더 빠른 컴퓨터를 사라고 말하자. ... 게다가 고객사에 성능 문제가 불쑥 나타난다는 것은 이국적인 곳으로 공짜 여행을 할 수 있는 기회일 수 있다. 정말로 우리가 해야 할 일은 여권을 항상 가까이에 소지하면서 상황을 예의주시하는 것이다. (그렇군... 좋은 내용이다..;;;)
디버거 차단
... 특히 브레이크 포인트를 잡기 어렵게 if와 then을 한 줄에 모두 사용하면 더욱 효과적이다. ... (대단한 방법이다!!!)
서드파티 라이브러리
프로젝트에 막강한 서드파티 라이브러리를 포함하고는 사용하지 않는다. 추가하고 사용하진 않았지만, 우리의 이력서 “기타 도구” 부분에 사용하지 않았던 도구 이름을 추가할 수 있다. ... ......;;
서적을 돈 받고 팔기에는 조금 걱정이 앞섰나봅니다..^^;; 그렇다고 책의 값어치가 전혀 없는 것은 아니고, 안 읽어보는 것보다는 읽어보는 것이 훨씬 도움이 됩니다. 그리고 개발자라면 책 내용을 이해해 가면서 재미있게 볼 수 있습니다. 마치 개발자 농담 같은 것을 모아 놓은 책이라고 할까요?
그리고 한편으로 책에서 말하는 내용 반대로 실천하면 유지보수를 쉽게할 수 있는 코딩법을 습득하실(?) 수 있습니다.^^
책 마지막까지 읽으시면 아시겠지만.. 저자도 애초에 재미로 쓴 글임을 언급하고 있습니다.^^
이 서적은 현재 판매되지 않고 있는 서적이지만, 한빛미디어 사이트에서 무료로 e-book(PDF) 파일로 다운로드 받으실 수 있습니다.
'혼자이야기 > 책이야기' 카테고리의 다른 글
이중설계 (0) | 2015.04.22 |
---|---|
웹 접근성 프로젝트 시작하기 (NHN은 이렇게한다!) (2) | 2015.03.21 |
하루 2시간 블로그로 1000달러 벌기 (2) | 2015.01.08 |
컬트 오브 레고 (The Cult of LEGO) (2) | 2015.01.02 |
리더의 조건 (0) | 2014.11.24 |