유지 보수 하기 어렵게 코딩 하는 방법

유지보수하기 어렵게 코딩하는 방법: 평생 개발자로 먹고 살 수 있다

2012. 12. 26. 17:43

유지 보수 하기 어렵게 코딩 하는 방법
HANB_How_to_write_unmaintainable_code.pdf

개발자로 평생 먹고 살수 있다. 

프로그래머들은 언제나 남들이 코드를 쉽게 이해할 수 있도록 작성하기 위해 노력한다. 하지만 남들이 쉽게 이해할 수 있는 코드만 작성한다면 자신의 가치를 높일 수 있을까? 제대로 기능은 수행하는데, 남들이 코드를 이해하기 어렵다면? 아마도 주변 사람들은 관련 프로그램을 유지보수하기 위해서 당신만을 찾게 될 것 이다. 노하우를 숨길 수 없을까? 이 책의 저자인 로에디 그린은 이런 의문을 시작으로 유지보수하기 어렵게 작성하는 방법들에 대해서 고민하였다. 저자가 제시하는 방법들을 하나하나 따라 하다 보면, 자신의 가치를 높일 수 있는 코딩 방법을 배울 수 있을 것이다.

[저자] 로에디 그린

로에디 그린은 컴퓨터 프로그래머이자 독립적인 컨설턴트로 활동하고 있다. 자바, 어셈블리, 인터넷 등을 포함한 사회적으로 중요한 프로젝트에 참여하였으며, 이를 통해 프로그램 경력을 키웠다.

저작자표시비영리변경금지

NAME

PASSWORD

HOMEPAGE

SECRET

PREV 1···320321322323324325326327328···517 NEXT

(주)알라딘커뮤니케이션

  • 대표이사 : 최우경
  • 고객정보보호 책임자 : 최우경
  • 사업자등록 : 201-81-23094
  • E-mail :
  • 통신판매업신고 : 중구01520호
  • 호스팅 제공자 : 알라딘커뮤니케이션
  • (본사) 서울시 중구 서소문로 89-31 ㅣ (중고매장) 자세히보기
  • (고객센터) 서울시 마포구 백범로 71 숨도빌딩 7층, Fax 02-6926-2600

ⓒ Aladin Communication. All Rights Reserved.

유지 보수 하기 어렵게 코딩 하는 방법

이 책의 저자는 어떻게 해야 나 말고 아무도 유지보수를 못하게 할까만 고민한 악마같음.
프로그래밍을 배울 때는 다들 '간결하게' '읽기 좋게' 짜라고 많이들 이야기 함.

그런데 이 저자는 이를 역행해버림. 왜?
...
자기말고 유지보수가 불가능하면, 회사에서 짜를 수가 없기 때문.

다른 유지보수 업체에서 GG치고 나가떨어지면

회사에서 거액의 연봉을 제시하면서 매달리기를 기다려라고 대놓고 말하는 센스가 참 괴악할 정도.

한번.. 코딩 하는 사람이라면 읽어볼법 함.
아래는 읽으면서 '와 이 인간 진짜 싸이코다' 하고 느낀 부분

#
포트란으로 코드를 작성하라. 상사가 그 이유를 묻는다면 포트란에는 유용한 라이 브러리가 많아서 시간을 절약할 수 있다고 대답하자.

포트란으로 작성한 코드를 유 지보수할 수 있는 확률은 0이다.

따라서 유지보수할 수 없는 코드 가이드라인을 지 키기가 아주 쉬워진다.

#
가장 사악한 기법부터 살펴보자. 컴파일에 성공해서 실행파일을 만들었다면, 각 모 듈에서 소스코드 몇 개를 수정하자.

그러나 이들 파일을 애써 재컴파일할 필요까진 없다.

나중에 디버깅할 시간이 남았을 때 재컴파일하면 된다.

운이 지지리 없는 유 지보수 프로그래머가 몇 년 후에 코드를 수정하지만 프로그램이 제대로 동작할 리 없다.

아마도 그녀는 자신이 수정한 뭔가에 문제가 있다고 생각할 것이다.

이와 같 은 기법으로 우리는 그녀를 몇 주 동안 바쁘게 만들 수 있다.

#
일반적인 true, false에 대한 정의를 뒤집어라. 보기보다는 파급효과가 크다. 아래 와 같은 정의를
#define TRUE 0
#define FALSE 1
아무도 잘 찾아보지 않을 코드 깊은 곳에 숨겨야 한다. 그리고 프로그램에서는 아 래와 같은 비교문을 사용할 수 있다.
if ( var = = TRUE )
if ( var != FALSE )

#
외부 회사와 유지보수 계약을 체결할 수 없도록 다른 소프트웨어 선도 업체를 폄하 하는 글을 추가한다.

특히 현재 회사와 계약할 수 있는 가능성이 있는 회사를 공격 할수록 좋다. 예를 들면, 다음과 같다.

/* 내부 루프 최적화 Software Services Inc.,의 굼뱅이들은 아래와 같은 코드를
꿈에도 몰랐겠지. 그 녀석들은 아마 답답한 <math.h>의 기능을 이용해서 50배나
느리고 메모리도 많이 사용했을 꺼야. */
class clever_SSInc
{

}

가능하다면 주석뿐만 아니라 코드 구문상 중요한 부분에 모욕적인 발언을 추가하 는 것이 좋다.

그러면 나중에 유지보수가 필요할 때 관리자는 해당 코드를 제거하 려고 애쓸 것이다.

#
실생활에서 활용된 예를 들면 a_crszkvc30Last-NameCol” 같은 변수를 만들 수 있다. 유지 보수 엔지니어 팀 전체가 이 변수명을 “이 변수는 const이고 레퍼런스 형식으로 함 수 매개변수로 사용되는데 테이블의 기본 키 가운데 하나인 ‘LastName’이라는 이 름의 Varchar[30] 형식의 데이터베이스 열에서 가져온 데이터를 담고 있다”라고 해독하는데 3일이 걸렸다. “모든 변수는 public이어야 한다”라는 규칙을 이 기법 에 접목하면 수천 라인의 코드를 대체할 수 있는 막강한 파워를 발휘할 수 있다!

#
C++에서 “c”를 const에 사용하라(C++). “c”는 C++ 이외의 언어에서는 보통 변 수가 상수임을 가리킨다.
다른 언어에서는 다른 의미로 해석되는 헝가리안 물혹(wart, 덧붙이는 음절이나 단어)을 찾고 사용하라. 예를 들어, C++ 코딩에서 모든 제어 형식에 “l_”과 “a_”와 같은 범위를 가리키는 접두어(파워빌더에 l은 지역을 a는 매개변수를 가리킨다)와 VB 스타일의 헝가리안 물혹을 사용하라. MFC 소스코드에서 제어 형식에 헝가리 안 물혹 표기법을 사용하지 않는다는 사실을 마치 모르는 것처럼 행동하라.

#
확장 아스키Extended ASCII
ß, Ð, n 등과 같은 확장 아스키 문자도 변수명에 사용할 수 있다는 사실을 잊지 말 자. 간단한 편집기에서는 복사 / 붙여넣기 말고는 확장 아스키 문자를 입력할 수 있 는 방법이 없다

누군가를 위한 연구소

[리뷰] 유지보수하기 어렵게 코딩하는 방법 본문

기타

[리뷰] 유지보수하기 어렵게 코딩하는 방법

리나 2021. 4. 28. 22:28

How to Write Unmaintainable Code

 "유지보수하기 어렵게 코딩하는 방법"를 읽었다. 한 개발자가 '아무도 내 코드를 유지보수 할수 없다면 난 평생 직장을 보장받을 수 있다!'라는 컨셉으로 쓴 40페이지 내외(원문 기준)의 짧은 문서이다. 영,한 모두 무료 PDF 다운 가능하고 github으로도 찾아볼 수 있다. 

유지 보수 하기 어렵게 코딩 하는 방법
천재

 처음엔 낄낄 웃으면서 읽었는데 나중에 갈수록 두통이 왔다. 왜냐면, 작가가 제시하는 모든 케이스가 단순한 농담이 아니라 실제 케이스에 기반한 것이라는 느낌이 왔기 때문이었다... 어느 업계나 그렇겠지만 코딩 업계도 상상초월하는 빌런이 존재할 것이고...그 빌런들의 가장 사악한 만행만 모아 놓은 일화집 같달까?

Hell is empty and all the devils are here.

읽으면서 내내 인간의 악마적 창의성에 경악을 금치 못했지만 개중에 인상 깊었던 것들은 다음이 있다. (번역은 내가 임의로 했다.)

주석에 거짓말을 해라. 적극적으로 거짓말 할 필요는 없고, 그냥 주석을 업데이트하지 않아서 코드랑 내용이 안 맞게 해라.
절대 변수, 인풋, 아웃풋, 파라미터에 쓰이는 측정 단위를 문서화 하지 마라. 엔지니어링 관련 작업에서는 특히 더 하지 마라. (생략) 좀 더 사악한 방법은, 자신만의 측정 단위를 만드는 것이다. 너 자신이나 다른 아무 사람의 이름을 따서 만들고 절대 문서화 하지 마라. 
주석에 다른 유명한 회사 욕을 넣어서 외부 회사와 유지보수 계약을 체결할 수 없게 하라. (생략) 가능하다면 주석뿐만 아니라, 코드 구문상 중요한 부분에 욕을 넣어라. 나중에 유지보수가 필요할 때 관리자는 코드를 손수 뜯어고쳐야 할 것이다. 

그리고 다음은 작가의 찐광기가 느껴졌던 구절..

특별한 이유 없이 오프셋을 1로 사용해라. 유지보수 개발자가 불안에 떨 것이다.
테스트는 겁쟁이들이나 하는 것이다. 용감한 개발자라면 이 단계를 건너뛴다. (생략) 스스로의 코딩 능력을 완전히 믿는다면 테스트는 불필요하다. (생략) 이건 기술적 문제라기보다는 심리적인 자신감에 관련된 문제이다. 이런 자신감 결여 문제에 관한 더 효율적인 방법은 테스팅을 완전히 생략하고 개발자들을 자존감 교육 코스에 보내는 것이다. 

 물론 마지막에 저자는 이 모든게 농담이라고 밝혔다. "유지보수하기 쉽게 코딩하는 방법" 를 써도 아무도 관심 없어서 반대로 썼다고 한다. 

작가는 로에디 그린으로, 1948년 출생 동물권 & 인권 활동가이자 자바 개발자이다. mindprod라는 동물권 및 소수자 인권 관련 단체를 운영하고 있다.부수적으로 컴퓨터도 가르친다고 한다(?) 뭔가 굉장히 아스트랄한 디자인의 웹사이트다. 마치 2003년 이후로 버려진 듯한 미적 감각을 풍긴다고 생각했는데 얼추 맞췄다(?) 페이스북은 2018년이 마지막 포스트이다.

관련 레딧 포스트도 있다. 모두들 홀리쓋을 외치며 작가의 사악함에 경악하고 있다.