c++ 編程命名規則

編程的命名規則,我第一反應就會想到匈牙利命名法。匈牙利命名法我都不想多說,因爲網上的文章一大把,大家自己去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

 
發佈了31 篇原創文章 · 獲贊 1 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章