C++编程(一):匈牙利命名法
匈牙利命名法
許多 Windows 程序員都使用“匈牙利標記法”作為變量命名約定。這是為了紀念具有傳奇色彩的微軟程序員 Charles Simonyi。這種標記法非常簡單,其基本原則為:
即變量名(標識符)以一個或者多個小寫字母開始,這些字母表示變量的數據型態。例如:szCmdLine 中的 sz 代表“以0結尾的字符串(StringZero)”;在 hInstance 和 hPrevInstance 中的 h 前綴表示“句柄(Handle)”;在 iCmdShow 中的 i 前綴表示“整型(Integer)”。
前綴以后就是一個首字母大寫(或者多個)的單詞,這些單詞清楚地指出了源代碼內那個對象的用途。比如:m_szStudentName表示一個學生名字的類成員變量,數據類型是字符串型
當命名結構變量時,可以用結構名(或者結構名的一種縮寫)的小寫形式作為變量名稱的前綴,或者用作整個變量名。例如:msg 變量是 MSG 型態的結構;wndclass 是 WNDCLASSEX 型態的一個結構;ps 是一個 PAINTSTRUCT 結構,rect 是一個 RECT 結構。
匈牙利表示法能夠幫助程序寫作者及早發現并避免程序中的錯誤。由于變量名既描述了變量的作用,又描述了其數據型態,就比較容易避免產生數據型態不合的錯誤。
下表列出了經常用到的變量名前綴:
1)屬性前綴:
| g_ | 全局變量 |
| c_ | 常量 |
| m_ | c++類成員變量 |
| s_ | 靜態存儲變量 |
| rg_ | 寄存器變量 |
| ex_ | 外部變量 |
2)一般變量類型前綴:
| c | char 8位字符 ;cGrade |
| str,s | string 字符型 ;strName |
| sz | 以"\0"結束的字符串 ;szAppName |
| ch | 字符 char 或 WCHAR 或 TCHAR 如果_UNICODE定義,則為16位字符 chName |
| b,f | BOOL 布爾值 ,f 表示“flag”;bEnable |
| by | 字節 BYTE (無符號字符) |
| n,i | int 整型(其大小依賴于操作系統);nLength |
| si | short int 短整型 ;siSequ |
| n | UINT 無符號值(其大小依賴于操作系統);nHeight |
| w | WORD(無符號短整型) 16位無符號值 ;wPos |
| f | float 浮點型(有時也指文件) ;fRadius |
| d | double 雙精度型 ;dArea |
| l | LONG 長整型 ;lOffset |
| ld | long double 長雙精度型 ;ldRate |
| dw | DWORD 雙字(32位無符號長整型) ;dwRange |
| p | * 指針 ;pDoc |
| lp | FAR* 遠指針 ;lpszName |
| lpsz | LPSTR 32位常量字符串指針 ;lpszName |
| lpsz | LPCSTR 32位常量字符串指針 ;lpszName |
| lpsz | LPCTSTR 如果_UNICODE定義,則為32位常量字符串指針 ;lpszName |
| h | handle Windows對象句柄 ;hWnd |
| lpfn | callback 指向CALLBACK函數的遠指針 |
| if | 輸入文件流 ;ifDataFile |
| of | 輸出文件流 ;ofStuFile |
| fn | 函數 |
| h | 句柄 |
| x,y | int,表示 x 坐標和 y 坐標 |
| cx,cy | int,表示 x 或 y 的長度,c 表示“count”(計數) |
| c(通常用cnt) | 計數 |
| C | 類或結構 ; CDocument,CPrintInfo |
| S | 結構體 ; SAddress |
| r | 實型 |
| u | 無符號 |
| v | 無效 |
3)描述前綴
| Max | 最大 |
| Min | 最小 |
| Init | 初始化 |
| T(或Temp) | 臨時變量 |
| Src | 源對象 |
| Dest | 目的對象 |
4)Microsoft MFC變量(宏)命名規范
| IDR_ | 不同類型的多個資源共享標識; IDR_MAIINFRAME; 1~0x6FFF |
| IDD_ | 對話框資源; IDD_SPELL_CHECK; 1~0x6FFF |
| HIDD_ | 對話框資源的Help上下文; HIDD_SPELL_CHECK; 0x20001~0x26FF |
| IDB_ | 位圖資源; IDB_COMPANY_LOGO; 1~0x6FFF |
| IDC_ | 光標資源; IDC_PENCIL; 1~0x6FFF |
| IDI_ | 圖標資源;IDI_NOTEPAD;1~0x6FFF |
| ID_ | 來自菜單項或工具欄的命令; ID_TOOLS_SPELLING; 0x8000~0xDFFF |
| HID_ | 命令Help上下文; HID_TOOLS_SPELLING;0x18000~0x1DFFF |
| IDP_ | 消息框提示; IDP_INVALID_PARTNO;8~0xDEEF |
| HIDP_ | 消息框Help上下文; HIDP_INVALID_PARTNO;0x30008~0x3DEFF |
| IDS_ | 串資源; IDS_COPYRIGHT;1~0x7EEF |
| IDC_ | 對話框內的控件; IDC_RECALC; 8~0xDEEF |
| … | … |
| _AFXDLL | 唯一的動態連接庫(Dynamic Link Library,DLL)版本 |
| _ALPHA | 僅編譯DEC Alpha處理器 |
| _DEBUG | 包括診斷的調試版本 |
| _MBCS | 編譯多字節字符集 |
| _UNICODE | 在一個應用程序中打開Unicode |
| AFXAPI | MFC提供的函數 |
| CALLBACK | 通過指針回調的函數 |
5)Microsoft MFC、句柄、控件及結構的命名規范
示例:
(1)文件名的匈牙利命名法:
文件的名稱也應該遵循匈牙利命名法,其以“F”+名字(名字首字母大寫)的形式出現。比如:
(2)常量的匈牙利命名法:
所有的常量命名都是以“c_”+名字(名字都是大寫字母,多個單詞用“_”連接)的形式出現。比如:
(3)變量的匈牙利命名法:
應用匈牙利命名法,所有的變量名都應該以前綴+名字(名字首字母大寫)的形式出現。比如:
PS:計數(備注)變量不適用匈牙利命名法,直接使用i,j,k。
(4)函數的匈牙利命名法:
函數的命名不帶前綴,函數中每一個單詞的開頭字母都要大寫。比如:
(5)結構體的匈牙利命名法:
結構體類型命名必須以“”+名字(名字都是大寫字母,多個單詞用“”連接)的形式出現。替代名以名字都是大寫字母,多個單詞用“”連接的形式出現。結構體變量命名必須以“m”+名字(與變量命名一致)的形式出現。比如:
總結
以上是生活随笔為你收集整理的C++编程(一):匈牙利命名法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python+OpenCV检测条形码
- 下一篇: 卸载pytorch