2012, C++ 王者歸來!
http://www.cnblogs.com/Lhw978/archive/2012/03/10/2389169.html
//****************************************************************************
// -----(C) Lhw978@163.com----
//文 件 名: C C++ VC MFC 命名規範.txt
//收集整理: Heavily (勁草...無香)
//郵 箱: Lhw978@163.com
// QQ: 64616914
// C/C++群: 194134342
//日 期: 2012-03-07
//功 能: C C++ VC MFC 命名規範
//著作權聲明: 本規範完全自由,可在尊重作者著作權的前提下,用於各種合法用途。
// 最終解釋權歸屬作者本人。
//備 注: 本規範由網上公開的零散規範收集整理而成,並加以適當修改。
// 歡迎各位同行的指正、補充、交流。
//****************************************************************************
本命名取自“匈牙利”法,僅供參考。
資料類型的命名規則參考:
定義類型:
首碼 類型 類型描述 樣本 占位元組(Win32) 有效值 取值範圍
-------------------------------------------------------------------------------------
typedef int BOOL VC++自訂BOOL BOOL bFlag 4 (TRUE/FALSE) 非0|0
b Boolena-布爾 1Bit的標誌 bool bFlag 1 (true/false) (0x0 ~0x1)
-------------------------------------------------------------------------------------
typedef unsigned char BYTE; BYTE byValue; 1 0 ~255 (0x0 ~0xFF)
by Byte 位元組 無符號的8bit位元組 unsigned char uchValue; 1 0 ~255 (0x0 ~0xFF)
ch Char 字元 有符號的8bit位元組 signed char chValue; 1 -128~127 (0x80~0x7F)
-------------------------------------------------------------------------------------
typedef unsigned SHORT WORD; WORD wValue; 2 0 ~65535 (0x0 ~0xFFFF)
w 不帶符號的Word字 無符號的16bit整數 unsigned short usValue; 2 0 ~65535 (0x0 ~0xFFFF)
s 帶符號的16位整型數 有符號的16bit整數 signed short sValue; 2 -32768~32767 (0x8000~0x7FFF)
-------------------------------------------------------------------------------------
typedef unsigned int DWORD; DWORD dwValue; 4 0 ~4294967295 (0x0 ~0xFFFFFFFF)
dw 不帶符號的doubleword字 無符號的32bit整數 unsigned int unValue; 4 0 ~4294967295 (0x0 ~0xFFFFFFFF)
n 帶符號的32位整型數 有符號的32bit整數 signed int nValue; 4 -2147483648~2147483647 (0x80000000~0x7FFFFFFF)
l 帶符號的長整型數 long lValue; 4/8
ll 帶符號的擴充長整型數 long long llValue; 8
-------------------------------------------------------------------------------------
f 單精確度浮點數 單精確度浮點數 float fValue; 4
d 雙精確度浮點數 雙精確度浮點數 double dValue; 8
-------------------------------------------------------------------------------------
r 引用 float &rfValue;
p 指標(pointer) 指標 char *pchName; 4
pp 多級指標 int **ppnData; 4
lp 長指標(VC++自訂) char FAR* *lpchValue;
pk const指標(pointer) const指標 const char *pkchName; /
/* unsigned char *pchData; 單字元 / unsigned short *pusData; */
/* const int *pknData; / unsigned int *punData; */
psz 指向以0結尾的字串指標(C風格字串) char *psz = "Hello World."; 4
sz 以0結尾的字串(C風格字串) char sz[] = "Hello World."; 13
char sz[13] = "Hello World."; 13
ach 字元數組 不以0結尾 char achName[2] = {'a', 'b'}; 2
-------------------------------------------------------------------------------------
t typedef自訂類型 union、struct結構體等類型 TNameInfo tName; /
pt 自訂類型指標 union、struct結構體指標等 PTNameInfo *ptName; /
-------------------------------------------------------------------------------------
a Array數組 數組 char achName[20]; /
aa 二維Array數組 多位元組 unsigned char aachName[4][2]; /
-------------------------------------------------------------------------------------
ap 存放指標的數組 存放指標的數組 char *apchName[2]; /
pa 指向數組的指標 指向數組的指標 unsigned char (*paucName)[2]; /
-------------------------------------------------------------------------------------
h Windows物件控點(VC++自訂) HWND hWnd
v void類型 void *pvValue; 4
k const類型 const int knValue;
en enum枚舉類型 枚舉類型 EN_NAME enName; 4
c class類 class類 CName cName; /
-------------------------------------------------------------------------------------
pf 函數指標(pointer func) 函數指標 typedef int (*pfMsgFunc)(int type);
-------------------------------------------------------------------------------------
s_ 靜態變數(static) 靜態變數 static int s_nValue;
g_ 全域變數(global) 全域變數 int g_nValue;
m_ 類的資料成員(member) 類的資料成員 int m_nValue;
-------------------------------------------------------------------------------------
字面常量值:
單精確度浮點 float 1.0F/f
雙精確度浮點 1.0
擴充雙精確度浮點 long double 1.0L
整型 (unsigned) int 3
長整型 (unsigned) long 3L
雙位元組字元 w_char L'ab' L'a' L'漢'
雙位元組字元串 w_char * L"hello world." L"雙位元組字元串"
宏定義、枚舉值: 全部大寫字元加底線(不要以底線_開頭) #define MAX_LEN 256 //不推薦#define _MAX_LEN 256
類名: C開頭,首字母大寫 class CMyClass{... ...};
結構體、聯合體: T開頭,首字母大寫(包括使用者自訂類型) struct TMySTruct{... ...}; union TMyUnion{... ...};
枚舉: EM_開頭,全部大寫字元加底線 enum EM_MY_ENUM{SUNDAY, MONDY, TUESDAY};
函數名: 首字母大寫(函數體不要超過200行),動詞或動名 int MyFunction(const char *pkchParam, const int &rknNum){... ...}
虛函數: Do開頭 virtual int DoFunction();
回呼函數: On開頭 void OnTimer(int nParam);
變數名 首碼加首字元大寫(不要出現重名、相似名稱) int nTotalValue; //名稱超過30個字母時應縮寫,並注釋說明
對於某些用途簡單明了的局部變數,也可以使用簡化的方式,如:i, j, k, x, y, z
備忘:C++中,多用const, 儘可能不用宏定義#define;
以底線_或雙底線__開頭的宏名,已為編譯器預留,使用者自訂的宏名最好不要以底線_或雙底線__開頭.
除非不得已,否則應該儘可能少使用全域變數。
每行唯寫一句代碼。
操作符之間應適當空格(規則略)。
縮排最好用4個空格代替Tab鍵。
====================================================================================
VC常用首碼列表:
首碼 類型 描述 例子
ch char 8位字元 chGrade
ch TCHAR 16位UNICODE類型字元 chName
b BOOL 布爾變數 bEnabled
n int 整型(其大小由作業系統決定) nLength
n UINT 無符號整型(其大小由作業系統決定) nLength
w WORD 16位無符號整型 wPos
l LONG 32位有符號整型 lOffset
dw DWORD 32位無符號整型 dwRange
p * Ambient memory model pointer 記憶體模組指標,指標變數 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
====================================================================================
Windows對象名稱縮寫:
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 hPalette; CPalette* pPalette;
HRGN hRgn; CRgn* pRgn;
HMENU hMenu; CMenu* pMenu;
HWND hCtl; CStatic* pStatic;
HWND hCtl; CButton* pBtn;
HWND hCtl; CEdit* pEdit;
HWND hCtl; CListBox* pListBox;
HWND hCtl; CComboBox* pComboBox;
====================================================================================
VC常用宏定義命名列表:
首碼 符號類型 符號例子 範圍
IDR_ 標識多個資源共用的類型 IDR_MAINFRAME 1~0x6FFF
IDD_ 對話方塊資源(Dialog) IDD_SPELL_CHECK 1~ 0x6FFF
HIDD_ 基於對話方塊的上下文協助 HIDD_SPELL_CHECK 0x20001~0x26FF
IDB_ 位元影像資源(Bitmap) IDB_COMPANY_LOGO 1~0x6FFF
IDC_ 游標資源(Cursor) IDC_PENCIL 1~0x6FFF
IDI_ 表徵圖資源(Icon) IDI_NOTEPAD 1~0x6FFF
ID_、IDM_ 工具列或功能表列的命令項 ID_TOOLS_SPELLING 0x8000~0xDFFF
HID_ 命令上下文協助 HID_TOOLS_SPELLING 0x18000~0x1DFFF
IDP_ 訊息框提示文字資源 IDP_INVALID_PARTNO 8~0xDFFF
HIDP_ 訊息框上下文協助 HIDP_INVALID_PARTNO 0x30008~0x3DFFF
IDS_ 字串資源(String) IDS_COPYRIGHT 1~0x7FFF
IDC_ 對話方塊內的控制資源 IDC_RECALC 8~0xDFFF
====================================================================================
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