헝가리안 표기법이(Hungarian Notation)란
변수 선언시 접두어를 붙여 변수의 의미를 명확하게 하기 위한 규칙이다.
마이크로소프트의 프로그래머 Charles Simonyi가 코딩할때 습관적으로 즐겨쓰던
접두사 변수 명명 방식이 빌 게이츠의 눈에 띄어 표준화된 것이다.
"헝가리안 표기법"으로 불리는 이유는 Charles Simonyi가 헝가리에서 이민 온 사람이었기
때문이다. 변수 이름만으로도 많은 정보를 한 눈에 알아볼 수 있어 오류를 획기적으로 줄여
주는 것으로 유명하다.
그래도 버릇들이는 게 앞으로 코딩을 하는 데 좋겠다 싶다. 나 혼자 작업할 것도 아니니까.
Hungarian Notation
Data Type | Prefix | Example |
Boolean | b | bContinue |
Int | n | nIndex |
Short | n | nIndex |
Character | c | cFirstInitial |
Float | f | fDistance |
Double | d | dMetres |
Long | l | lCarCount |
String | s | sCustomerName |
Null terminated String | sz | szCustomerName |
Unsigned Integer (Word) | w | wCount |
Unsigned long integer (DWORD) | dw | dwAtomCount |
Pointer | p | pNext |
Handle | h | hWnd |
Function | fn | fnReport |
Class | C | CParser |
Class member variable | m_ | m_ |
Array | a | aYears |
Global | g_ | g_szDirectory |
Windows message | Msg | msgCut |
Windows Resources
Resource Type | Prefix | Example |
Menu Item Resource | ID_ | ID_EDIT_CUT |
String | IDS_ | IDS_STRING1 |
Dialog Control | IDC_ | IDC_EDITBOX |
ICON | IDI_ | IDI_MAINICON |
Cursor | IDC_CURSOR_ | IDC_CURSOR_ARROW |
Dialog Box | IDD_ | IDD_ABOUTBOX |
Accelerator | IDR_ | IDR_ACCELERATOR |
Bitmap | IDB_ | IDC_ARROW |
접두어 | 의미 |
a | 배열 |
b 또는 f | BOOL형 변수(b는 "bool", f는 "flag"의 약자) |
by | BYTE (unsigned char)형 변수 |
c | 카운터로 사용되는 변수 |
ch | char형 변수 |
cx, cy | x, y 길이를 나타내기 위해 사용되는 변수 |
d | 날짜형 변수 |
dbl | double형 변수 |
dw | DWORD(unsigned long)형 변수 |
f | float |
fn | 함수 |
g_ | global 변수 |
h | HANDLE 형 변수 |
hwnd | HWND(WINAPI) |
i 또는 n | 정수(int)형 변수 |
l | long형 변수 |
m_ | class의 멤버 변수 |
p | 포인터 변수 |
pv | Void pointer |
pt | Point struct(WINAPI) |
r 또는 rc | RECT struct(WINAPI) |
s | 문자열 |
str | CString 형 변수 |
sz | NULL로 끝나는 문자열(사실상 그냥 문자열 -_-;) |
u | unsigned int형 변수 |
w | WORD형 변수 |
[예제]
g_pszVarName : global pointer to a null-terminated string named VarName
apfValues : local array of pointers to floats named Values
pafValues : local pointer to an array of floats named Vaues
m_hwndParent : member HWND named Parent
'ETC' 카테고리의 다른 글
[IntelliJ] 인텔리제이 메모리 할당량 늘리기 (0) | 2016.12.07 |
---|---|
currentTimeMillis() 함수 (0) | 2016.11.22 |
당신이 모를 수도 있는 크롬 개발자 콘솔 기능들 (Things you probably didn’t know you could do with Chrome’s Developer Console) (0) | 2016.11.08 |
블로그에 소스코드 붙이기 (0) | 2016.09.07 |
리눅스와 윈도의 줄바꿈 차이 (0) | 2016.08.28 |