최신판 |
당신의 편집 |
1번째 줄: |
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) | |