2010 << 01월 02월 03월 04월 05월 06월 07월 08월 09월 10월 11월 12월 >>
September 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
mEmOpAd
1713.B7  email  kebie@krpost.net
| 블 로 그 | 트랙백 | 달 력 | 방 명 록 | | 프 로 필 | 위치로그 | 관 리 자 |
한RSS에 추가 Entries, Total, MyBBS
icon DRY법칙 - 주석을 아껴라
구정을 맞이하여 할머니 댁에 가있는 동안 상대적인 시간의 여유가 생겨서(==심심해서 ), 이럴때 읽어보려고 가져온 책(==실용주의프로그래머)을 조금 읽어봤다. 역시 컴퓨터가 눈앞에 없어야 책이 손에 잡힌다. 어째서 "프로그래머에게 있어 탈무드와도 같은 책"인가 했더니, 탈무드와 비슷한 방식으로 내용이 전개된다.

'DRY(Don't Repeat Yourself)법칙' 이라든지 '직교성' 에 대한 부분을 공감하며 읽던 도중, "나쁜 코드야 말로 많은 주석을 필요로 한다. 주석은 높은 차원의 설명을 위해 아껴둬라." 라는 대목에서 약간의 충격을 받았다. 스스로가 주석을 꽤 많이 달고 있었고, 주석의 내용도 추상적이지 못했기 때문이다.

주석을 꼼꼼하게 다는 것이 좋은 습관이고, 그런 주석은 기억력이 좋지 못한 경우를 대비하는 차원에서 좋은 것 아닌가? 하지만, 돌이켜보면, 예전 소스의 상세한 주석이 도움이 된 적은 거의 없었던 것 같다. 주석의 내용이 최신의 것인지도 잘 모르겠고, 그정도 까지의 상세한 내용은 주석을 통하여 알 필요도 없었다.

주석은 다른 말 이더라도 개념상으로 유사한 경우가 있어서 아무래도 코드에 비해 중복될 염려도 많다. 코드의 갱신과 함께 주석도 갱신되야 하는데, 유사하거나 중복된 주석이 많을수록 낡은 주석이 방치될 가능성도 높아진다. 게다가 이렇게 방치된 주석은 스파게티 코드보다 위험하다. 아마도 주석을 왠만하면 달지 말라는 것이 아니라, 잘 변하지 않는 높은 차원의 설명을 통한 최소한의 주석을 달아야 한다는 것을 의미하는 것 같다.
코드의 경우 인터페이스와 구현을 분리하는 경우가 많은데, 이런 구조에서 주석의 중복을 최소화 하려면, 헤더파일에서는 인터페이스에 대하여 (잘 변하지 앟는) 간략한 사항만을 기록하고, 구현부에는 코드의 사용자가 알필요가 없는 어느정도 상세한 것들을 (높은차원의 설명으로) 기록한다. 구현부는 해당 코드를 최적화 하는 경우가 아니라면 거의 볼 필요가 없기 때문에 헤더에는 구현과 관련된 주석이 달릴 필요가 없다. 아무래도 주석을 다는 스타일에 변화를 줘야 할 것 같다.

2006.02.03 : 밑줄을 긋기 시작했는데, 어느덧 온통 줄천지가 되어버렸다.

트랙백 파일 지웠어요.. 보내고 싶은 분들은 이렇게 하시면 됩니다;;
mEmOpAd에서 보내준 트랙백입니다  [06/07/25 17:05] [삭제]
제목: 주석을 사용하느냐 이용하느냐?
예전의 경향이 주석은 되도록 상세하고 자세하게 다는 것이었다면, 최근의 경향은 주석을 되도록이면 아끼라는 것이다. 그런데, 요즈음의 자바를 보면 어노테이션 같은 기능의 추..
Hani 06/03/03 20:23 icon icon
실용주의 프로그래머,
저도 읽어 봤는데, 좋은 이야기가
많더군요.

프로젝트를 해 볼수록 주석의 폐해를
실감하게 됩니다. :)
icon
icon icon
kebie 06/03/03 21:09 icon
예전에 옳다고 생각했던 것중에 잘못된 것들이 참 많더군요... 역시 가장 좋은 스승은 경험인 것 같습니다. ^^;
icon icon
Name :    Pass :   URL :
비밀글로 등록  icon

icon   [1] ... [174] [175] [176] [177] [178] [179] [180] [181] [182] ... [224]   icon
   
Valid HTML 4.01 Transitional graph
1713.B7 Ajax BitTorrent del.icio.us Delphi Event flex Java JavaScript Linux LiteStep Mac Memo Perl PHP planet Plug-in Python RSS Ruby Tag TagCloud TDD UCC Web 2.0 WebOS wiki WOW 개똥철학 검색 계획 고쳐쓰기 나의생각 나의추천 네이버 드라마 몰스킨 배포 신뢰 실용주의 심리 애니 야근 영화 옥션 워드프레스 유틸리티 음악 인공지능 일상 재테크 제안 좋은말 책읽기 추억 코딩 탈디지털 태그검색 태터툴즈 패턴 핸드폰 후기
category
분류 전체보기 (224)
Life LoG (156)
Memo LoG (45)
내장바구니 (17)
지식인 (6)
search
submit
link
+ 디스크 사용량 (392.5%)
785.1 MB / 200 MB
+ 데이터베이스 사용량 (161.7%)
16.2 MB / 10 MB

count

powered by tt (old)