title: "헝거리언 표기법의 단점, C++ de facto Coding Standard"
description: "헝거리언 표기법의 단점, C++ de facto Coding Standard"
cleanUrl: /sw-engineer/cplusplus-de-facto-coding-standard
ogImage: ""
floatFirstTOC: right

헝거리언 표기법에서는 접두어로서 타입의 특징을 나타내는 축약어를 사용하는데, User Defined Type이 많아질수록, 그 타입의 특징을 나타내는 축약어를 만들기가 힘들어지더라(class등의 User Defined Type이 많아지는 것은 Object Oriented Language를 사용하면 당연히 나타나는 현상).

C/C++ User Journal에 나온 Hungarian Notation 반대에 관한, Herb Sutter와 어떤 사람의 썰~. (member 변수 명명에는 camelCase에 접미어로 underbar()를 붙이라니.. 지저분한데.. 차라리 'm'가 더 나아 보이는데..)

Conversations: Hungarian wartHogs by Jim Hyslop and Herb Sutter

위에까지는 05년 6월 14일에 이전 블로그에 적어둔 썰. 다음은 Modern C++ Design에 알렉산드레스쿠(!! 이름 함 지랄스럽다)가 Herb Sutter의 표기법이라며 추천한 위 대화의 결과물.

Classes, functions, and enumerated types look LikeThis.

클래스, 함수, 열거 타입의 경우는 LikeThis(<- 처럼 쓴다고)

Variables and enumerated values look likeThis.

변수와 열거타입 값은 likeThis

Member variables look likeThis_.

멤버 변수는 likeThis_

Template parameters are declared with class if they can be only a user-defined type, and with

typename if they can also be a primitive type.

템플릿 매개변수 선언시 class 키워드는 오직 사용자 정의 타입에, typename 키워드의 경우는 원시타입도 가능할 경우에 사용하자~

이전 회사에서 Win32 코드에 위 스타일을 적용해서 써봤는데 헝거리언 스타일인 Win32 API로 인해 튄다는 느낌이 있긴하다. 하지만 익숙해지고 나니 튀는 모습도 나름 좋아보이기도. 뭐 내가 쓴 코드를 분간하는 느낌도 있고.. 여하간 헝거리언보다는 편하다(특히 타입의 약자를 만드는 고심(!)을 안해도 되는 점에서)

그나저나 .NET, java로 외도한지 넘 오래되어 C++이 그리워 간다. 금년만 지나면 ATL 세계로 퐁당~! 이참에 template meta programming까지 뽕빨봐야쥐~ 헤헤.