C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[63144] Re:[의견] Clean Code...헝가리안 표기법을 버려라?
심성현 [sim51177] 2870 읽음    2010-12-03 11:26
헝가리한 표기법 안쓴지 오래되었네요.

학생이라는 클래스를 만든다고 할때
헝가리안 표기법으로 쓰면 이렇게 쓰겠죠.
class TStudent
{
	int m_iNo;			// 학번
	string m_strName;	// 이름
	int m_iKor;			// 국어점수
	int m_iEng;			// 영어점수
	int m_iMath;		// 수학점수
	int m_iTotal;		// 총점
	float m_fAvg;		// 평균
};


저는 이렇게 코딩합니다.
class TStudent
{
	int no;				// 학번    
	string name;		// 이름    
	int korScore;		// 국어점수
	int engScore;		// 영어점수
	int mathScore;		// 수학점수
	int totalScore;		// 총점    
	float avgScore;		// 평균   
};


변수명에 타입을 나타내는 접두어를 붙이는게 아니라 변수명 자체를 명확하게 해서 타입을 알 수 있게 합니다.

int m_iKor => int korScore;

korScore는 국어점수니깐 int겠네.
no 는 학번이니깐 당연히 int겠구.
name는 이름이니깐 당연히 string 이겠지.

멤버변수명과 지역변수명 또는 멤버함수명과 일반함수명을 따로 구분하지 않습니다.
대신 멤버변수나 멤버함수를 사용할 때는 반드시 "this->" 포인터를 붙입니다.
그럼 this-> 가 붙어있으면 멤버변수, 없으면 지역변수라는걸 알수 있습니다.
this->를 붙이는면 코드가 지저분해지긴 하지만 IDE 에디터의 멤버리스트 기능을 사용하게 되니깐 습관적으로 붙이게 되더군요.

// 이 방식으로 코딩을 하게 되면
this->korScore = 30;
// 헝가리안 표기법 으로는 이렇게 됩니다.
m_iKor = 30;


그럼 코드의 해석이 더 직관적으로 됩니다.
// 제가 쓰는 방식
   this     ->   kor    Score  =    30;
// 이학생 / 의 / 국어 / 점수 / 는 / 30점

// 헝가리사람들 방식   
   m      _i     Kor    =    30;
// 멤버 / 정수 / 국어 / 는 / 30점


사실 이것은 자바 또는 닷넷에서 사용하는 방식을 적용한것 입니다..

그런데 특이한것은 MFC에서 헝가리안 표기법을 적극 사용했던 마소에서도 닷넷에서는 헝가리안 표기법을 전혀 안사용 한다는 것입니다.(MFC와 닷넷에서 자동생성되는 코드를 보면 확인할 수 있습니다.) 오히려 자바의 방식을 많이 따르고 있더군요.

자바나 닷넷처럼 클래스명도 접두어 없이 대문자시작으로만 쓰고 싶지만
TStudent => Student
그래도 TForm, TButton, TEdit 을 사용하면서 내가 만든 클래스에만 그러지는 못하겠더라구요.

씨뿔뿔을 만든 Bjarne Stroustrup(비자르네 스트로우스트럽?) 아저씨는 고정폭 폰트도 필요없다고 하시죠. 그 분이 쓰신 책도 그렇구. 번역본도 원서 따라 가변폭 글꼴로 인쇄되어 있죠. 그것도 따라해 볼려고 했는데 내공이 부족해서 포기했습니다.

물론 전 혼자 코딩하기 때문에 이렇게 할 수 있습니다.
헝가리에 가면 헝가리말을 써야 겠죠.



땅주인 님이 쓰신 글 :
: 드뎌 사무실에 평화가 찾아와서.. 책을 한 권 봅니다.
:
: Clean Code...
:
: 현대적인 개발툴은 변수 Scope나 변수 타입 정보를 충분히 Support해주므로
: 굳이 헝가리안 표기법을 고집할 필요가 없다고 하는데.. m_, fXXX, dXXX, m_strXXX 등을 쓰지말아라는 소리인데..
:
: 저의 경우
:
: int                    iXXX;  
: UnicodeString sXXXX; 
: BYTE               byXXXX;  
: bool                 bXXXX;
: ...
:
: Class CCar  {
:     int                    m_iXXXXX;
:     UnicodeString m_sXXXXX;
:     BYTE               m_byXXXXX;
:     bool                m_bXXXX;
: }
:
: 뭐 이렇게 쓰고 있는데..
:
: 업무 상 MFC와 C++ Builder를 모두 쓰고 있는 상황에서 두 개의 툴을 모두 써보니..
: 일단, 에디터 환경은 VC가 좀 낫다... Visual Assist까지 쓰면 많이 낫다.. C++ builder에 Visual Assist가
: 나오면 좋겠다.. 뭐.. 그런 생각이 들고, Builder로 코딩할 때 변수나 함수를 찾아갈 때..
: 저의 경우 무자게~~ Search in Files를 많이 사용하다 보니 손가락이 다 아플 지경인데요..
: (손목이 좀 안 좋은 상태라..)
: 그외 bookmark 기능도 좀 개선을 했으면 좋겠고.. 여타의 개발 지원 도구를 해주었으면 하는데..
:
: 그런 상황이라 헝가리안 표기법를 버리기가 좀 .....
:
: 다른 분들의 의견은 어떠신 지?

+ -

관련 글 리스트
63135 [의견] Clean Code...헝가리안 표기법을 버려라? 땅주인 1893 2010/12/02
63175     Re:[의견] Clean Code...헝가리안 표기법을 버려라? 아루스 1536 2010/12/07
63144     Re:[의견] Clean Code...헝가리안 표기법을 버려라? 심성현 2870 2010/12/03
63136     Re:[의견] Clean Code...헝가리안 표기법을 버려라? Lyn 1941 2010/12/02
63137         C++ 창시자와의 인터뷰 Lyn 2134 2010/12/02
63143             Re:C++ 창시자와의 인터뷰 땅주인 1896 2010/12/03
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.