헝가리한 표기법 안쓴지 오래되었네요.
학생이라는 클래스를 만든다고 할때
헝가리안 표기법으로 쓰면 이렇게 쓰겠죠.
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 기능도 좀 개선을 했으면 좋겠고.. 여타의 개발 지원 도구를 해주었으면 하는데..
:
: 그런 상황이라 헝가리안 표기법를 버리기가 좀 .....
:
: 다른 분들의 의견은 어떠신 지?