잘못된 코드를 알아보기 쉽게 만들기
FrontPage|FindPage|TitleIndex|RecentChanges|UserPreferences E D R S I M H RSS

회사에서 문성익님께서 보내신 정보 메일

신종훈님의 요청으로 대충 요약해 보면, 아래 글의 내용은 다음과 같습니다. 제목은 "잘못된 코드를 알아보기 쉽게 만들기" 정도로 번역할 수 있겠네요.

1) 프로그램 코드는 빵 공장과 같아서, "더러운" 상태와 "깨끗한" 상태를 제대로 파악하는데는 훈련이 필요하다. 예를 들어 빵 공장의 바닥이나 오븐 패널 같은 곳이 얼마나 더러운지는 전혀 중요하지 않다; 그러나 반죽 마는 기계의 틈에 약간의 먼지라도 있다면 치명적이다.

2) 잘 알려진 Hungarian 표기법에는 두 가지가 있다: App Hungarian 과 System Hungarian. App Hungarian 은 logical "type" (Joel 은 이걸 "Kind" 라고 쓰고 있습니다) 을 표기하는 것이고, System Hungarian 은 다들 아는 그것이다.

3) 원래 Simonyi 가 Hungarian 표기법 (즉 App Hungarian) 을 개발했던건 Microsoft Word 를 개발할때 Window 좌표계와 Page 좌표계 등을 구분하기 위함이었다: 가령 rwMax 는 row 의 최대값, colMax 는 칼럼의 최대값. 둘 다 컴파일러에겐 int.

4) 불행히도 Simonyi 가 자신의 논문에 "type" 이란 표현을 사용함으로서, 많은 이들이 그가 System Hungarian 을 주장하는 걸로 알아들었고, 그런 잘못된 인식이 널리 퍼졌고, 많은 이들이 불편해했고, 결국 Hungarian 표기법은 "Considered Harmful" 리스트에 들어갔고, .NET 에서는 "헝가리안 표기법 비추!" 라는 경고문 마저 붙게 되었다.

5) 왜 헝가리안 표기법이 중요한가? 가령 웹 게시판의 경우, 사용자에게서 받은 문자열을 그대로 화면에 뿌리면 큰일난다. 그렇다고 DB 에 HTML 인코딩해서 넣기엔 꿀꿀하다. 그렇다면 us (unsafe) 와 s (safe) 문자열을 구분해서

s_text = s_from_us(us_text);
식으로 쓰게 되면 "눈이 자동으로 디버깅" 할 수 있게 된다. 일반적으로 사용하는 "a_to_b" 가 아니라 "a_from_b" 라는 함수 이름에 주의. 패턴이 한군데 모여 있게 만듦으로서 눈에 익게 하려는 트릭이다.

6) exception 은 "invisible goto" 로서, 일반 goto 보다 더 나쁘다.


이상입니다. 도움이 되길 바랍니다.

... 사족을 달자면 6) 은 C++ 에 한정된 얘기라고 볼 수 있습니다. smart pointer 를 쓰지 않는 C++ 에서는 exception 이 정말 위험하겠죠.

  • 이전 메일
조엘 스폴스키가 또 하나의 좋은 글을 썼네요.

http://www.joelonsoftware.com/articles/Wrong.html

저도 anti-hungarian, pro-exception 파벌입니다만, 이런 표기법이라면 맘에 드는군요.

EditText|FindPage|DeletePage|LikePages| Valid XHTML 1.0! Valid CSS! powered by MoniWiki