헝가리안 표기법: Difference between revisions
From IT Wiki
(새 문서: ;Hungarian Notation ;컴퓨터 프로그래밍에서 변수 및 함수의 이름 인자 앞에 데이터 타입을 명시하는 코딩 규칙 * 마이크로소프트(Microsoft)의 찰...) |
No edit summary |
||
Line 1: | Line 1: | ||
;Hungarian Notation | ;Hungarian Notation | ||
;컴퓨터 프로그래밍에서 변수 및 함수의 이름 인자 앞에 데이터 타입을 명시하는 코딩 규칙 | ;컴퓨터 프로그래밍에서 변수 및 함수의 이름 인자 앞에 데이터 타입을 명시하는 코딩 규칙 | ||
*마이크로소프트(Microsoft)의 찰스 시모니(Charles Simonyi)가 개발 책임자로 있을 때 제안 | |||
*헝가리안 표기법이라는 명칭은 제안자인 찰스 시모니가 헝가리인이라서 붙은 것이다. | |||
*80년대 당시에는 IDE라는게 다들 부실했기 때문에 이 규칙이 엄청난 센세이션을 불러 일으켰다. | |||
*지금은 MS도 공식 가이드라인에서 사용하지 말 것을 권고하고 있다. | |||
=== | ==표기법== | ||
===공통=== | |||
{| class="wikitable" | |||
| '''접두어''' | |||
| '''데이터 타입''' | |||
|- | |||
|b | |||
|byte, boolean | |||
|- | |||
|n | |||
|int, shot | |||
|- | |||
|i | |||
|int, shot(주로 인덱스로 사용) | |||
|- | |||
|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) | |||
|} | |||
== | ===OOP=== | ||
* 다른 타입 접두어 앞에 붙여 사용한다. (ex: m_lpszName - 클래스 멤버 변수인 64bit 문자열 포인터) | |||
= | {| class="wikitable" | ||
|'''접두어''' | |||
|'''데이터 타입''' | |||
|- | |||
|g_ | |||
|네임스페이스의 글로벌 변수 | |||
|- | |||
|m_ | |||
|클래스의 멤버 변수 | |||
|- | |||
|s_ | |||
|클래스의 static 변수 | |||
|- | |||
|c_ | |||
|함수의 static 변수 | |||
|} | |||
== 참고 문헌 == | ==장점== | ||
* https://myeonguni.tistory.com/1595 (명우니닷컴) | |||
* https://msdn.microsoft.com/en-us/library/aa260976(VS.60).aspx (MSDN) | * 데이터 타입을 변수명에서 바로 추정할 수 있다. | ||
* IDE가 없을 때 작업하는 경우 (특히 vi나 emacs로 터미널에서 작업할 때) 여러모로 유리해진다. | |||
* 같은 의미를 가지는 서로 다른 타입의 변수가 있을 때 이름 충돌을 방지할 수 있다. | |||
==단점== | |||
* 코드를 단번에 파악하기 힘들어진다. | |||
* 변수나 함수 인자의 이름을 기억하기가 힘들다. | |||
* 데이터 타입이 바뀌면 변수 또는 함수 인자의 이름을 바꿔야 한다(리팩토링을 지원하는 IDE가 없으면 답이 없다) | |||
* 같은 의미를 가지는 서로 다른 타입의 변수가 있을 때 이것들을 왜 선언했는지를 잊어버렸다면 답이 없다. | |||
* C/C++일 경우 언어 명세에서 데이터 타입의 크기를 강제하지 않은 바람에 시스템 아키텍처에 따라 데이터 타입의 크기가 다르다는 문제가 있다. | |||
==현재 추세== | |||
*디스플레이 화면이 커지면서 한 눈에 볼 수 있는 코드의 양이 많아지고, IDE가 눈부시게 발전하면서 마우스 커서만 올리면 해당 변수의 데이터 타입이 다 뜨는 덕에 헝가리언 표기법은 바로 구식으로 변하고 말았다. 마이크로소프트사에서도 사용하지 않을 것을 권고하고 있다. | |||
==참고 문헌== | |||
*https://myeonguni.tistory.com/1595 (명우니닷컴) - 원본 내용 출처 | |||
*https://msdn.microsoft.com/en-us/library/aa260976(VS.60).aspx (MSDN) |
Latest revision as of 23:42, 8 March 2020
- Hungarian Notation
- 컴퓨터 프로그래밍에서 변수 및 함수의 이름 인자 앞에 데이터 타입을 명시하는 코딩 규칙
- 마이크로소프트(Microsoft)의 찰스 시모니(Charles Simonyi)가 개발 책임자로 있을 때 제안
- 헝가리안 표기법이라는 명칭은 제안자인 찰스 시모니가 헝가리인이라서 붙은 것이다.
- 80년대 당시에는 IDE라는게 다들 부실했기 때문에 이 규칙이 엄청난 센세이션을 불러 일으켰다.
- 지금은 MS도 공식 가이드라인에서 사용하지 말 것을 권고하고 있다.
표기법[edit | edit source]
공통[edit | edit source]
접두어 | 데이터 타입 |
b | byte, boolean |
n | int, shot |
i | int, shot(주로 인덱스로 사용) |
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) |
OOP[edit | edit source]
- 다른 타입 접두어 앞에 붙여 사용한다. (ex: m_lpszName - 클래스 멤버 변수인 64bit 문자열 포인터)
접두어 | 데이터 타입 |
g_ | 네임스페이스의 글로벌 변수 |
m_ | 클래스의 멤버 변수 |
s_ | 클래스의 static 변수 |
c_ | 함수의 static 변수 |
장점[edit | edit source]
- 데이터 타입을 변수명에서 바로 추정할 수 있다.
- IDE가 없을 때 작업하는 경우 (특히 vi나 emacs로 터미널에서 작업할 때) 여러모로 유리해진다.
- 같은 의미를 가지는 서로 다른 타입의 변수가 있을 때 이름 충돌을 방지할 수 있다.
단점[edit | edit source]
- 코드를 단번에 파악하기 힘들어진다.
- 변수나 함수 인자의 이름을 기억하기가 힘들다.
- 데이터 타입이 바뀌면 변수 또는 함수 인자의 이름을 바꿔야 한다(리팩토링을 지원하는 IDE가 없으면 답이 없다)
- 같은 의미를 가지는 서로 다른 타입의 변수가 있을 때 이것들을 왜 선언했는지를 잊어버렸다면 답이 없다.
- C/C++일 경우 언어 명세에서 데이터 타입의 크기를 강제하지 않은 바람에 시스템 아키텍처에 따라 데이터 타입의 크기가 다르다는 문제가 있다.
현재 추세[edit | edit source]
- 디스플레이 화면이 커지면서 한 눈에 볼 수 있는 코드의 양이 많아지고, IDE가 눈부시게 발전하면서 마우스 커서만 올리면 해당 변수의 데이터 타입이 다 뜨는 덕에 헝가리언 표기법은 바로 구식으로 변하고 말았다. 마이크로소프트사에서도 사용하지 않을 것을 권고하고 있다.
참고 문헌[edit | edit source]
- https://myeonguni.tistory.com/1595 (명우니닷컴) - 원본 내용 출처
- https://msdn.microsoft.com/en-us/library/aa260976(VS.60).aspx (MSDN)