1. 程式人生 > >程式設計命名規則

程式設計命名規則

 程式設計的命名規則,我第一反應就會想到匈牙利命名法。匈牙利命名法我都不想多說,因為網上的文章一大把,大家自己去google搜尋。但是為了方便起見,我還是在這裡簡單的介紹一下:

匈牙利命名法通過在變數名前面加上相應的小寫字母的符號標識作為字首,標識出變數的作用域,型別等。

這些符號可以多個同時使用,順序是

一、先m_(成員變數)或者是g_(全域性變數)

二、就是指標,通常以p來表示

三、然後是簡單資料型別

四、再是其他

例如:m_lpszStr, 表示 指向一個以 '/0' 字元結尾的字串的長指標成員變數。

匈牙利命名法關鍵是:

識別符號的名字以一個或者多個小寫字母開頭作為字首;

字首之後的是首字母大寫的一個單詞或多個單詞組合,該單詞要指明變數的用途。

字首 型別
a 陣列 (Array)
b 布林值 (Boolean)
by 位元組 (Byte) == 8 bit
c 有符號字元 (Char)
cb 無符號字元 (Char Byte,沒有多少人用)
cr 顏色參考值 (ColorRef)
cx,cy 座標差(長度 ShortInt)
dw 雙字 (Double Word) == 4 Byte == 4 * 8 bit
fn 函式(function)
h 控制代碼(Handle)
i 整型(int)
l 長整型 (Long int)
lp 長指標(Long Pointer)
m_ 類的成員(member of a class)
n 短整型 (Short Int)
np 近指標(Near Pointer)
p 指標(Pointer)
s 字串型(string)
sz 以字元'/0'結尾的字串 (String with Zero End)
w 字(Word) == 2 Byte == 2 * 8 bit
但是在任何情況下,都硬性規定使用匈牙利命名法是迂腐的。尤其是 Unix 程式設計,在使用沒有變數名、關鍵字自動補齊功能的編輯器,如 vi 下,去敲入大小寫混合的變數名是痛苦的。 其實只要注意兩個原則: 1) 含義清晰,不易混淆;  2) 不和其它模組、系統API的名稱空間相沖突即可。 1.        有意識的為變數名、巨集名加上本模組的關鍵字,就不至於和其它模組、系統API的名稱空間相沖突;            例如: 巨集的名稱過短,如:"DEBUG" 或 "_DEBUG",很可能和別的模組,系統模組相沖突; 2.        區域性變數尤其是迴圈變數外,使用約定俗成的 i,j,k ,沒有問題; 3.        巨集、常量、列舉enum,全部用大寫字母; 4.        全域性變數加上字首 "g",後面跟上首字母大寫的單詞;            全域性變數嗎,費事一點可以諒解 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
還有一點想說明一下: 常量和巨集定義必須全部以大寫字母來撰寫,中間可根據意義的連續性用下劃線連線,每一條定義的右側必須有一簡單的註釋,說明其作用; 下面是vc資源名字定義格式: 選單:           IDM_XX     //M:Menu 點陣圖:           IDB_XX     //B:Bitmap 對話方塊:        IDD_XX     //D:Dialog 字串:        IDS_XX     //S:String ICON:          IDI_XX      //I:Icon 按鈕控制元件:          IDC_BTN_XX      //BTN:Button 編輯控制元件:          IDC_EDT_XX      //EDT:EditBox 列表控制元件:        IDC_LST_XX      //LST:ListCtrl 樹表控制元件:        IDC_TRE_XX      //TRE:TreeCtrl 富文字控制元件:     IDC_RCH_XX      //RCH:RichEdit 靜態本控制元件:     IDC_STT_XX       //STT:StaticText 組合框控制元件:     IDC_CMB_XX      //CMB:ComboBox 滾動條控制元件:     IDC_SCR_XX       //SCR:ScrollBar 滑動條控制元件:     IDC_SLD_XX       //SLD:Slider 多選項控制元件:     IDC_CHK_XX       //CHK:CheckBox 單選項控制元件:     IDC_RDB_XX       //RDB:RadioButton