본문 바로가기
프로그래밍/웹개발(WEB)

[네이밍룰] 헝가리안 표기법(hungarian Notation)

by imfireguy 2021. 5. 1.
반응형

@heylagostechie unsplash

헝가리안 표기법(hungarian Notation)

Microsoft사의 헝가리안 개발자가 사용하던 변수명에서 유래된 방법입니다.

변수의 자료형을 변수 명의 접두어로 붙이는 방식으로 간단하게 변수명만 보고 자료형을 인식할 수 있는 방식입니다.

예전에는 효율성이 좋았지만 최근에는 가독성이 떨어지고 개발도구의 발전으로 많이 쓰이지 않는 방식이라고 합니다.

 

1. 공통

접두어 데이터타입
b byte, boolean
n int, shot
i int, short(주로 인덱스로 사용)
c int, short(주로 크기로 사용)
l long
f float
d,db double
ld long double
w word
dw double word
qw quad word
ch char
sz NULL로 끝나는 문자열
str C++ 문자열
arr 배열(문자열 제외): 다른 접두어와 조합 가능
p 포인터(16bit, 32bit): 다른접두어와 조합 가능
lp 포인터(64bit): 다른접두어와 조합 가능
psz NULL로 끝나는 문자열을 가르키는 포인터(16bit, 32bit)
lpsz NULL로 끝나는 문자열을 가리키는 포인터(64bit)
fn 함수타입
pfn 함수포인터(16bit, 32bit)
lpfn 함수포인터(64bit)

 

2. OOP

다른 타입 접두어 앞에 붙여 사용합니다.(예: g_name) 

접두어 데이터 타입
g_ 네임스페이스의 글로벌 변수 
m_ 클래스의 멤버 변수
s_ 클래스의 static 변수
c_ 함수의 static 변수

 

3. 장점

 - 데이터 타입을 변수명에서 바로 추정할 수  있습니다.

 - IDE가 없을 때 작업하는 경우 특히 vi나 터미널에서 작업 시 여러모로 유리합니다.

 - 같은 의미를 가지는 서로 다른 타입의 변수가 있을 때 이름 충돌을 방지할 수 있습니다.

 

4. 단점

 - 코드를 단번에 파악하기 힘이 듭니다.

 - 변수나 함수 인자의 이름을 기억하기가 힘이 듭니다.

 - 데이터 타입이 데이터 타입이 바뀌면 변수 또는 함수 인자의 이름을 바꿔야 합니다(리팩터링을 지원하는 IDE가 없으면 힘이 듭니다)

 - 같은 의미를 가지는 서로 다른 타입의 변수가 있을 때 이것들을 왜 선언했는지를 잊어버렸다면 확인하기가 어렵습니다.

 - C/C++ 일 경우 언어 명세에서 데이터 타입의 크기를 강제하지 않은 바람에 시스템 아키텍처에 따라 데이터 타입의 크기가 다르다는 문제가 있습니다.

 

5. 현재 상황 

화면이 커지고 한눈에 볼 수 있는 코드가 많아지고, IDE가 발전하면서 마우스 커서만 올리면 해당 변수의 데이터 타입이 다 보이는 바람에 헝가리안 표기법은 구식으로 변하고 말았습니다. 현재 마이크로소프트사에서도 사용하지 않을 것을 권하고 하고 있습니다.

반응형

댓글