디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

유지 보수가 어렵게 코딩 하는 방법 읽어봣냐?

허허벌판갤로그로 이동합니다. 2011.09.09 11:21:30
조회 192 추천 0 댓글 8



이 책을 보고 웃는 사람은 프로그래머 밖에 없을듯

여튼 재밌다 ㅋㅋㅋㅋ 한번 읽어봐





이름 짓기

험프티 덤프티(Humpty Dumpty)는 다소 경멸적인 어조로 말했다. "내가 단어를 사용할 때에는 더도 덜도 아닌 딱 그 의미를 전달하려는 것이다."
- Through the Looking Glass, 6 장 중에서(루이스 캐롤(Lewis Carroll) 지음)
변수와 메소드의 이름을 짓는 방법은 유지보수 할 수 없는 코드를 작성하는데 있어 상당히 중요한 기술이다. 이름은 컴파일러에 영향을 주지 않는다. 이름 짓기 기술로 유지보수 프로그래머의 정신을 혼미하게 만들 수 있다.

태아 작명법의 새로운 용도

태아 작명법 서적을 구입하자. 그러면 변수명을 뭐로 지어야 할지에 대한 고민을 덜 수 있을 것이다. Fred는 멋진 이름이며 입력하기도 쉽다. 입력이 쉬운 변수명을 원한다면 asdf를 사용해 보기 바란다.

단일 문자 변수명

변수명을 a, b, c 등으로 정한다면 간단한 텍스트 편집기로 해당 인스턴스를 검색하는데 애를 먹게 된다. 뿐만 아니라 그 변수가 무엇에 쓰이는 것인지 추측할 수 없게 방지하는 역할도 한다. 포트란(FØRTRAN)에서는 오랫동안 I, j, k를 인덱스 변수로 사용해왔다. 혹시라도 이러한 훌륭한 전통을 조금이라도 깨뜨리려는(예를 들어, ii, jj, kk 등으로 이름을 변경하려는) 사람이 있는가? 스페인 종교재판에서 이교도에게 어떠한 형벌을 가했는지를 그에게 경고하자.

창의적 오타

어쩔 수 없이 뭔가를 설명하는 변수명이나 함수명을 사용해야 하는 상황이라면 오타라는 무기를 선택하자. 몇몇 함수명과 변수명에 오타를 내고 다른 곳에서는 오타를 사용하지 않는다면(예를 들어, SetPintleOpening과 SetPintalClosing처럼) grep이나 IDE 검색 기술을 효과적으로 무력화할 수 있다. 이 방법은 생각보다 놀라운 효과를 발휘한다. 각기 다른 theatres/theaters(둘 다 극장을 의미)에 tory나 tori같이 국제적인 취향도 추가해본다.

추상화하라

가능한 한 it, everything, data, handle, stuff, do, routine, perform, 숫자 등과 같이 추상적인 단어를 변수명이나 함수명에 많이 사용하자(좋은 예, routineX48, PerformDataFunction, DoIt, HandleStuff, do_args_method).

머.리.글.자.

머리글자로 코드를 간결하게 만든다. 진짜 사나이는 머리글자를 풀어 설명하지 않고 있는 그대로를 선천적(유전적)으로 이해한다.

진화한 유의어 사전

유의어 사전에서 되도록이면 많은 단어가 같은 동작(예를 들어, 뭔가를 보여준다는 의미를 가진 display, show, present 등과 같은)을 가리키도록 하는 것도 지루함을 달랠 좋은 방법 중 하나다. 실제 의미상 차이가 없는 단어라 할지라도 알 듯 말듯하게 모호한 힌트를 제공하는 것도 잊지 말자. 때로는 비슷한 두 함수가 완전 다른 동작을 하는 경우가 있다. 이러한 경우에는 두 함수를 같은 단어로 설명한다(예를 들면, "파일 기록", "종이에 잉크 칠하기", "화면에 보여주기"를 print라는 한 단어로 설명할 수 있다). 어떤 경우에도 명확한 어휘를 사용해 특수 프로젝트에 사용할 용어집을 만들어 달라는 요구에 굴복하지 말아야 한다. 이러한 요구에 굴복하는 행위는 정보 은닉(information hiding)이라는 구조화된 디자인 원칙을 위반하는 프로답지 못한 행동이다.

다른 언어의 복수형을 사용하라

VMS 스크립트는 "Vaxen(Vax 컴퓨터의 복수형)"에서 반환하는 다양한 "statii(status의 복수형)"를 추적한다. 에스페란토(현재는 거의 쓰이지 않는 인공어), Klington(스타 트렉에 등장하는 전사 종족의 언어), Hobbitese(소설에 등장하는 가상 종족 호빗의 언어) 등을 사용하면 보다 효율적이다. Pluraloj와 같이 단어 뒤에 oj를 추가해서 에스페란토 어를 모방할 수 있다. 이러한 에스페란토를 사랑하는 작은 노력이 세계 평화에 기여하는 것임을 기억하자.

새로운 개념의 낙타표기법(CapiTaliSaTion)

무작위로 단어의 중간 음절 첫 글자를 대문자로 표기하자. 예를 들면 ComputeRasterHistoGram()처럼 메소드 명을 정할 수 있다.

이름을 재사용하라

언어의 규칙이 허용하는 범위 내에서 클래스, 생성자, 메소드, 멤버 변수, 파라미터, 지역 변수에 같은 이름을 사용하자. 이에 안주하지 말고 더 나아가서 {} 블록 내에서 이미 사용되고 있는 지역 변수명을 재사용할 수 있는지 고민하자. 이렇게 함으로써 유지보수를 담당하는 프로그래머가 모든 인스턴스의 범위를 유심히 살펴보도록 만들 수 있다. 특히 자바 언어에서는 일반 메소드를 생성자처럼 보이게 할 수 있다.

강세가 있는 단어

변수명에 강세가 표시된 단어를 사용하자. 아래 코드를 살펴보면,

typedef struct { int i; } int;
두 번째 int에서 i 에 강세가 있다. 간단한 텍스트 편집기로는 미묘한 차이를 구별하는 것이 거의 불가능하다.
컴파일러의 이름 길이 제한을 악용하라

컴파일러가 인식할 수 있는 변수명의 길이는 정해져 있다. 만약 변수명의 8글자만을 인식할 수 있는 컴파일러가 있다면, var_unit_update()과 var_unit_setup()처럼 마지막 부분만 살짝 바꿔보자. 그럼 컴파일러는 두 이름을 동일한 var_unit으로 인식할 것이다.

밑줄(underscore)은 진정한 친구다

_와 __를 식별자로 사용하자.

언어를 혼용하라

두 언어(사람의 언어나 컴퓨터의 언어)를 무작위로 배치하자. 만약 상사가 자신의 언어를 사용할 것을 강요한다면 어떻게 할 것인가? 상사에게 나만의 언어를 사용해야 생각을 더 잘 정리할 수 있다고 설명하자. 신사적인 설명으로 해결되지 않는다면? 언어 차별 행위에 대해 이의를 제기하고, 당장 고용주를 고소를 할 수도 있으며 거액의 배상금을 내야 하는 상황에 처할 수 있다고 협박하자.

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 현역으로 군대 안 간게 의아한 스타는? 운영자 25/06/30 - -
AD 휴대폰 바꿀까? 특가 구매 찬스! 운영자 25/07/02 - -
271146 아아.. 너무 잉여롭다 [1] Rei@디씨갤로그로 이동합니다. 11.09.10 45 0
271145 포인터까지배우고 나서 교수님이 시킨거 생각난다 Adelposs갤로그로 이동합니다. 11.09.10 61 0
271144 니들이 존재의 의미를 깨닫지 못하는한 영원히 고통스러울뿐이다. [2] 쵸쵸(219.251) 11.09.10 49 0
271143 중소기업들이 나의 능력을 알아보지 못하는 이유... [6] 천재해커(59.14) 11.09.10 171 0
271142 프갤러들 다 기본으로 토익 800이상에 토익스피킹 7급이상 나오잖아? [30] Deanex갤로그로 이동합니다. 11.09.10 223 0
271140 돈 받고 프로그래머 때려치우기 VS 프로그래머로서 정년 55세까지 보장 [1] ㅇㅇㅇ(121.144) 11.09.10 272 0
271139 이히 횽 봐랑 [2] y녀6디리(220.118) 11.09.10 35 0
271138 만약 C++ 나 C에서 (수정) [10] 써무사(50.131) 11.09.10 93 0
271137 훌륭한 프로그래머와 대단한 개발환경 [2] 구글리(115.145) 11.09.10 86 0
271135 별찍기 해봄 ㅇㅇ 변수 5개나 씀 [2] 로하로하알로하갤로그로 이동합니다. 11.09.10 82 0
271134 내가 옜날에 수학 떡밥 관련해서 본 개념글 올려봄 [4] 뇌지랄갤로그로 이동합니다. 11.09.10 130 0
271133 형들 플밍에서 수학은 어디까지? [5] Adelposs갤로그로 이동합니다. 11.09.10 101 0
271132 형들 소켓 플밍 말이야 [2] Adelposs갤로그로 이동합니다. 11.09.10 53 0
271131 뇌지랄아 [9] Adelposs갤로그로 이동합니다. 11.09.10 59 0
271130 응용 별찍는거 나도 해봣는데 [3] 로하로하알로하갤로그로 이동합니다. 11.09.10 48 0
271129 으앜 심심해 진짜 3개월 동안 플밍도 놓고 병신병신열매 능력자 됨 [4] Adelposs갤로그로 이동합니다. 11.09.10 76 0
271128 프갤이 죽어서 미연시 추천받으로 면갤가니까... [2] Adelposs갤로그로 이동합니다. 11.09.10 53 0
271127 뭐냐 시발 주말이라고 프갤이 지금 죽은거냐 Adelposs갤로그로 이동합니다. 11.09.10 20 0
271126 횽들 내가 devcpp로 코딩을 하는데 [11] 써무사(50.131) 11.09.10 85 0
271125 횽들 그 C++나 C 에서 단어들 기억하는거 [2] 써무사(50.131) 11.09.10 57 0
271124 여기 맥 북 에어 유저 있음? [2] 분당살람갤로그로 이동합니다. 11.09.10 67 0
271123 for문을 이용한 삼각형 만들기 응용문제. [2] IUV갤로그로 이동합니다. 11.09.10 109 0
271121 이제는 질문글 보기도 싫다 Adelposs갤로그로 이동합니다. 11.09.10 30 0
271120 진짜 25살 이하는 아직 인간으로써의 이성을 가지고 있지 않은거 같다. [2] 천재기획가(219.251) 11.09.10 109 0
271119 학과에서 배우는 과목들인데 프로그래머가 되려면 이것들이 도움이 될까요? 현역(110.45) 11.09.10 53 0
271118 횽들. 여기 암호화 관련 질문하면 받아주나효? [4] 이히(121.166) 11.09.10 64 0
271117 프로그래밍 공부하면서 난감하다 느끼는게 순서가 애매하단거임 [9] 사고편향형ADHD갤로그로 이동합니다. 11.09.10 110 0
271116 디시 가입함. [1] 씨닙갤로그로 이동합니다. 11.09.10 51 0
271115 프로그래머들 중에는 해보지도 않고 포기하는 사람들이 많은 것 같음. [5] dd(121.133) 11.09.10 155 0
271114 시_발 코드에 개성이 담기면 어떻게 되는줄 앎? [1] laoshanlong갤로그로 이동합니다. 11.09.10 70 0
271113 횽들 rand 질문 하나 해도되나여? [1] 써무사(50.131) 11.09.10 45 0
271112 c언어 달팽이 배열 짰는데 어디가 틀린거지? [2] 파워맨(119.201) 11.09.10 233 0
271111 이문제 어떻게풀어요? [16] 사고편향형ADHD갤로그로 이동합니다. 11.09.10 115 0
271109 형들 질문이연 [7] 좆대딩.갤로그로 이동합니다. 11.09.10 42 0
271108 진짜 실력이 죽여주면, 미국에서 영어못해도 뽑아간다. [3] 쵸쵸(219.251) 11.09.10 115 0
271106 VB <-> 커널 통신궁금한게있어요 [1] 궁금(180.226) 11.09.10 42 0
271105 코드에는 작성자의 개성을 함축할 수 있어야 한다. [4] ㅇㅇ(121.133) 11.09.10 80 0
271104 간단한 배열 짰는데 자꾸 에러가 뜨네 나만 그런가 좀 봐주셈 [8] ㅍㅁㄴㅇㄻ(119.201) 11.09.10 54 0
271102 독담 저놈은 공부를 절대 안하는거 같다. [1] Adelposs갤로그로 이동합니다. 11.09.10 54 0
271101 쿄스케같이 추석때 할거 없는 놈은 봐라 [1] Adelposs갤로그로 이동합니다. 11.09.10 35 0
271100 형들 미연시 하면 변태인가? [4] Adelposs갤로그로 이동합니다. 11.09.10 68 0
271099 추석을 앞두고 할얘기는 아니지만 서도. [2] 쵸쵸(219.251) 11.09.10 78 0
271097 니들 세얼간이는 보고 갤질하냐?? [8] 쿄스케갤로그로 이동합니다. 11.09.10 146 0
271095 일어나니개운하고 while이 중첩이된다길래 구구단작성되는거만듬이거맞나? [2] 사고편향형ADHD갤로그로 이동합니다. 11.09.10 76 0
271094 자러간다.. 이문동쮸쮸바갤로그로 이동합니다. 11.09.10 50 0
271093 좋다 조공을 해주겠다. [1] 독담갤로그로 이동합니다. 11.09.10 197 0
271092 프갤러들 고마웡~♥ [3] 독담갤로그로 이동합니다. 11.09.10 154 0
271091 아 또 뭐야 햇갈리게 [3] Agangs갤로그로 이동합니다. 11.09.10 86 0
271090 좀 더 깔끔하게잉 [1] ㅋㄱ(183.96) 11.09.10 71 0
271089 우와 시발된다 ㅋㅋㅋㅋ [2] 독담갤로그로 이동합니다. 11.09.10 122 0
뉴스 ‘피디씨’ 헨리, “바이올린 배우기 싫어 부순 적도”…음악 천재로 거듭난 터닝 포인트는? 디시트렌드 07.04
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2