Camel標記法、Pastal標記法和匈牙利標記法

收藏 
      爲了代碼清晰易懂,通常變量名採用一些著名的命名規則,主要有Camel標記法,Pastal標記法和匈牙利標記法。
      Camel標記法採用首字母小寫,接下來的單詞都以大寫字母開頭的方法,如myName。
      Pastal標記法採用首字母大寫,接下來的單詞都以大寫字母開頭的方法,如MyName。
      匈牙利標記法是在Pastal標記法的基礎上,變量名前面加上一個小寫字母,或者小寫字母的序列,以說明該變量的類型,如sMyName。
匈牙利命名法是微軟推廣的一種關於變量、函數、對象、前綴、宏定義等各種類型的符號的命名規範。匈牙利命名法的主要思想是:在變量和函數名中加入前綴以增進人們對程序的理解。它是由微軟內部的一個匈牙利人發起使用的,結果它在微軟內部逐漸流行起來,並且推廣給了全世界的Windows開發人員。下面將介紹匈牙利命名法,後面的例子裏也會盡量遵守它和上面的代碼風格。還是那句話,並不是要求所有的讀者都要去遵守,但是希望讀者作爲一個現代的軟件開發人員都去遵守它。
a       Array                                 數組
b       BOOL (int)                            布爾(整數)
by      Unsigned Char (Byte)                  無符號字符(字節)
c       Char                                  字符(字節)
cb      Count of bytes                        字節數
cr      Color reference value                 顏色(參考)值
cx      Count of x (Short)                    x的集合(短整數)
dw      DWORD   (unsigned long)                 雙字(無符號長整數)
f       Flags   (usually multiple bit values)   標誌(一般是有多位的數值)
fn      Function                              函數
g_      global                                全局的
h       Handle                                句柄
i       Integer                               整數
l       Long                                  長整數
lp      Long pointer                          長指針
m_      Data member of a class                一個類的數據成員
n       Short int                             短整數
p       Pointer                               指針
s       String                                字符串
sz      Zero terminated String                以0結尾的字符串
tm      Text metric                           文本規則
u       Unsigned int                          無符號整數
ul      Unsigned long (ULONG)                 無符號長整數
w       WORD (unsigned short)                 無符號短整數
x,y     x, y coordinates (short)              座標值/短整數
v       void                                  空
有關項目的全局變量用g_開始,類成員變量用m_,局部變量若函數較大則可考慮用l_用以顯示說明其是局部變量。
前綴    類型               例子
g_      全局變量           g_Servers
C       類或者結構體       CDocument,CPrintInfo
m_      成員變量           m_pDoc,m_nCustomers
VC常用前綴列表:
前綴    類型    描述例子
ch      char    8位字符 chGrade
ch      TCHAR   16位Unicode集字符 chName
b       BOOL    布爾變量 bEnable
n       int     整型 nLength
n       UINT    無符整型 nLength
w       WORD    16位無符號整型 wPos
l       Long    32位有符號整型 lOffset
dw      DWORD   32位無符號整型 dwRange
p       *       指針變量,內存模塊指針(Ambient memory model point) pDoc
lp      Far*    長指針 lpDoc
lpsz    LPSTR   32位字符串指針 lpszName
lpsz    LPCSTR 32位常量字符串指針 lpszName
lpsz    LPCTSTR 32位Unicode集常量指針 lpszName
h       handle Windows對象句柄 hWnd
lpfn    (*fn)() 回調函數指針 Callback Far pointer to CALLBACK function lpfnAbort
匈牙利命名法
MFC、句柄、控件及結構的命名規範 Windows類型樣本變量 MFC類樣本變量
HWND hWnd;        CWnd* pWnd;
HDLG hDlg;        CDialog* pDlg;
HDC hDC;         CDC* pDC;
HGDIOBJ hGdiObj; CGdiObject* pGdiObj;
HPEN hPen;        CPen* pPen;
HBRUSH hBrush;    CBrush* pBrush;
HFONT hFont;      CFont* pFont;
HBITMAP hBitmap; CBitmap* pBitmap;
HPALETTE hPaltte; CPalette* pPalette;
HRGN hRgn;        CRgn* pRgn;
HMENU hMenu;      CMenu* pMenu;
HWND hCtl;        CState* pState;
HWND hCtl;        CButton* pButton;
HWND hCtl;        CEdit* pEdit;
HWND hCtl;        CListBox* pListBox;
HWND hCtl;        CComboBox* pComboBox;
HWND hCtl;        CScrollBar* pScrollBar;
HSZ hszStr;      CString pStr;
POINT pt;         CPoint pt;
SIZE size;        CSize size;
RECT rect;        CRect rect;

一般前綴命名規範
前綴          類型實例
C    類或結構 CDocument,CPrintInfo
m_   成員變量 m_pDoc,m_nCustomers

變量命名規範
前綴 類型 描述實例
ch    char 8位字符 chGrade
ch    TCHAR 如果_UNICODE定義,則爲16位字符 chName
b     BOOL 布爾值 bEnable
n     int 整型(其大小依賴於操作系統) nLength
n     UINT 無符號值(其大小依賴於操作系統) nHeight
w     WORD 16位無符號值 wPos
l     LONG 32位有符號整型 lOffset
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函數的遠指針
前綴 符號類型 實例 範圍
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

應用程序符號命名規範
Microsoft MFC宏命名規範名稱類型
_AFXDLL 唯一的動態連接庫(Dynamic Link Library,DLL)版本
_ALPHA   僅編譯DEC Alpha處理器
_DEBUG   包括診斷的調試版本
_MBCS    編譯多字節字符集
_UNICODE 在一個應用程序中打開Unicode
AFXAPI   MFC提供的函數
CALLBACK 通過指針回調的函數

庫標識符命名法 標識符值和含義
u ANSI(N)或Unicode(U)
d 調試或發行:D = 調試;忽略標識符爲發行。

靜態庫版本命名規範 庫描述
NAFXCWD.LIB 調試版本:MFC靜態連接庫
NAFXCW.LIB 發行版本:MFC靜態連接庫
UAFXCWD.LIB 調試版本:具有Unicode支持的MFC靜態連接庫
UAFXCW.LIB 發行版本:具有Unicode支持的MFC靜態連接庫

動態連接庫命名規範 名稱類型
_AFXDLL 唯一的動態連接庫(DLL)版本
WINAPI Windows所提供的函數

Windows.h中新的命名規範類型定義描述
WINAPI   使用在API聲明中的FAR PASCAL位置,如果正在編寫一個具有導出API人口點的DLL,則可以在自己的API中使用該類型
CALLBACK 使用在應用程序回叫例程,如窗口和對話框過程中的FAR PASCAL的位置
LPCSTR   與LPSTR相同,只是LPCSTR用於只讀串指針,其定義類似(const char FAR*)
UINT     可移植的無符號整型類型,其大小由主機環境決定(對於Windows NT和Windows 9x爲32位);它是unsigned int的同義詞
LRESULT 窗口程序返回值的類型
LPARAM   聲明lParam所使用的類型,lParam是窗口程序的第四個參數
WPARAM   聲明wParam所使用的類型,wParam是窗口程序的第三個參數
LPVOID   一般指針類型,與(void *)相同,可以用來代替LPSTR
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章