헝가리안 표기법: 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도 공식 가이드라인에서 사용하지 말 것을 권고하고 있다.


== 표기법 ==
*마이크로소프트(Microsoft)의 찰스 시모니(Charles Simonyi)가 개발 책임자로 있을 때 제안
=== 공통 ===
*헝가리안 표기법이라는 명칭은 제안자인 찰스 시모니가 헝가리인이라서 붙은 것이다.
*80년대 당시에는 IDE라는게 다들 부실했기 때문에 이 규칙이 엄청난 센세이션을 불러 일으켰다.
*지금은 MS도 공식 가이드라인에서 사용하지 말 것을 권고하고 있다.


=== OOP ===
==표기법==
===공통===
{| 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"
* 디스플레이 화면이 커지면서 한 눈에 볼 수 있는 코드의 양이 많아지고, IDE가 눈부시게 발전하면서 마우스 커서만 올리면 해당 변수의 데이터 타입이 다 뜨는 덕에 헝가리언 표기법은 바로 구식으로 변하고 말았다. 마이크로소프트사에서도 사용하지 않을 것을 권고하고 있다.
|'''접두어'''
|'''데이터 타입'''
|-
|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]