匈牙利命名法
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 |
?
前缀 | 类型 | 描述 | 实例 |
arr | Array | 静态数组 | arrPoint |
b | BOOL | 布尔值 | bEnabled |
by | unsigned char(BYTE) | 8位无符号字符 | byWeek |
ch | Char | 8位字符 | chGrade |
tch | TCHAR | 如果是_UNICODE,为16位字符 | tchName |
i/n | Int | 整形(其大小依赖于操作系统) | iRange |
u | UINT | 无符号整形(其大小依赖于操作系统) | nLength |
us | unsigned short | 无符号短整形 | usPort |
w | WORD | 16位无符号值 | wParam |
l | LONG | 32位有符号整形 | loffset |
dw | DWORD | 32位无符号整形 | dwVolume |
f | Float | 4字节浮点数 | fHigh |
d | Double | 8字节浮点数 | dAmount |
cy | CURRENCY | 8字节货币类型 | cySell |
p | * | 指针 | pDoc |
lp | FAR * | 远指针 | lpDoc |
lpsz | LPSTR | 为32位字符串指针 | lpszName |
lpcsz | LPCSTR | 32位常量字符串指针 | lpcszName |
lpctsz | LPCTSTR | 如果_UNICODE定义,为32位常量字符串指针 | lpctszName |
bstr | BSTR | 带有4字节长度前缀的w_chart数组 | bstrMessage |
pbstr | BSTR* | BSTR数据类型指针 | pbstrMsg |
str | String | CString类型的字符串 | strMessage |
och | OLECHAR | OLECHAR字符类型 | ochX |
osz | OLECHAR* | OLECHAR字符串类型 | oszX |
var | VARIANT | VARIANT数据类型 | var |
pvar | VARIANT* | VARIANT数据类型指针 | pvar |
sa | SAFEARRAY | SAFEARRAY数据类型 | sa |
psa | SAFEARRAY* | SAFEARRAY数据类型指针 | psa |
dlg | CDialog | Windows对话框 | dlg |
stc | CStatic | Windows静态文本控件 | stc |
edt | Cedit | Windows编辑框控件 | edt |
lsb | CListBox | Windows列表控件 | lsb |
btn | CButton | Windows按钮控件 | btn |
scb | CScrollBar | Windows滚动条控件 | scb |
spn | CSpinButtonCtrl | Windowswe微调按钮控件 | spn |
tab | CTabCtrl | Windows选项卡控件 | tab |
rtf | CRichEditCtrl | Windows富文本编辑框控件 | rtf |
sld | CSliderCtrl | Window滑块控件 | sld |
list | ClistCtrl | Windows列表控件 | list |
tre | CtreeCtrl | Windows树形控件 | tre |
dtc | CDateTimeCtrl | Windows时间选取器控件 | dtc |
prg | CProgressCtrl | Windows进度指示器控件 | prg |
cbo | CComboBox | Windows组合框控件 | cbo |
ils | CImageList | Windows图像列表 | ils |
tlb | CToolBarCtrl | Windows工具条控件 | tlb |
mnu | Cmenu | Windows菜单控件 | mnu |
sta | CStatusBar | Windows状态条控件 | sta |
wnd | CWnd | Windows窗口 | wnd |
cx | X | Windows X坐标 | cx |
cy | Y | Windows Y坐标 | cy |
pt | Cpoint | Windows点阵 | hWnd |
size | Csize | Windows尺寸 | size |
rect/rc | Crect | Windows矩形 | rect |
pen | Cpen | Windows画笔 | pen |
br | Cbrush | Windows刷子 | br |
fnt | Cfont | Windows字体 | fnt |
cr | COLORREF | Windows颜色值RGB | cr |
PMp | Temp | 临时变量 | PMpBuff |
h | Handle | Windows对象句柄 | hWnd |
lpfn | Callback | 指向CALLBACK函数的远指针 | lpfnAbort |
it/iter | iterator | 迭代子 | it |
vect | std::vector | 标准模板库 | vect |
map | std:map | 标准模板库 | map |
deque | std:deque | 标准模板库 | deque |
list | std:list | 标准模板库 | list |
set | std:set | 标准模板库 | Set |
multiset | std:multiset | 标准模板库 | multiset |
multimap | std:multimap | 标准模板库 | multimap |
指针类型的变量,必须加上前缀"p",如:int* pnValue;。
全局(静态)变量的命名规则同第一条的规定,并且必须加上前缀"g_"。
类成员(静态)变量的命名规则同第一条的规定,并且必须加上前缀"m_"。
模块(函数/过程)内部的重要变量命名遵循第一条的规定。
模块(函数/过程)内部的静态变量命名遵循第一条的规定,并且加上前缀"s_"。
其余变量在不损害程序易读易懂原则的基础上酌情处理。这些变量通常是模块内的临时变量,如循环控制变量、数组的下标等,它们可用缩写进行简化处理,如:int i;。
宏(#define)或者常量修饰符(const):大写字母组成的名词词组,单词间用下划线作为连接符,如:#define INVALID_CLOSE 0; const double INVALID_CLOSE = double(0);。
枚举类型(enum):此时的命名规则同"变量命名的一般性规则",可参考MFC或ADO等的命名方式。
单词构成的动宾词组,每个单词首字母大写,其余字母小写。如:void DrawLine ( void );。
3.1.1.3 类命名规则
类的原型,是前缀"C"加单词构成的动宾词组,每个单词首字母大写,其余字母小写。如:class CStockPacket; class CPacket;。
类的实例变量,采用小写首字母缩写的方式定义,如:CStockPacket sp;。
在对类的成员变量和成员函数定义时,要加以分类,并界定相应的存取权限(参见表二:类成员的分类描述)
分类描述 | 存取权限(依实际应用而定) |
// Constructors | Public |
// Attributes | Private |
// Operations(对于com组件是//Methods) | Public |
// Overridables | Protected |
// Implementation | Private |
结构的原型采用组合词的方式定义,并且全部采用大写字符的形式。如:
typedef struct tagStockTrans
{
DWORD dwOpen;
...
} STOCKTRANS;
结构的实例变量,采用小写首字母缩写的方式定义,如:STOCKTRANS st;。