在编程时,变量、函数的命名是一个极其重要的问题。好的命名方法使变量易于记忆且程序可读性大大提高。Microsoft采用匈牙利命名法来命名Windows API函数和变量。匈牙利命名法是由Microsoft的著名开发人员、Excel的主要设计者查尔斯·西蒙尼在他的博士论文中提出来的,由于西蒙尼的国籍是匈牙利,所以这种命名法叫匈牙利命名法。
匈牙利命名法为C标识符的命名定义了一种非常标准化的方式,这种命名方式是以两条规则为基础:
1.标识符的名字以一个或者多个小写字母开头,用这些字母来指定数据类型。
2.在标识符内,前缀以后就是一个或者多个第一个字母大写的单词,这些单词清楚地指出了源代码内那个对象的用途。比如,m_szStudentName表示一个学生名字的类成员变量,数据类型是字符串型。
附录:
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 |
S | 结构体 | SAddress |
m_ | 成员变量 | m_pDoc,m_nCustomers |
变量命名规范
前缀
类型
描述
实例
c
char
8位字符
cGrade
str string 字符型 strNamech
TCHAR
如果_UNICODE定义,则为16位字符
chName
b
BOOL
布尔值
bEnable
n ,i
int
整型(其大小依赖于操作系统)
nLength
si
short int 短整型 siSequn
UINT
无符号值(其大小依赖于操作系统)
nHeight
w
WORD
16位无符号值
wPos
f
float 浮点型 fRadiusd
double 双精度型 dAreal
LONG
长整型
lOffset
ld
long double 长双精度型 ldRatedw
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函数的远指针
输入文件流 ifDataFileof
输出文件流 ofStuFilesz
以"\0"结束的字符串 szAppName
类型
描述
实例
c
char
8位字符
cGrade
str string 字符型 strNamech
TCHAR
如果_UNICODE定义,则为16位字符
chName
b
BOOL
布尔值
bEnable
n ,i
int
整型(其大小依赖于操作系统)
nLength
si
short int 短整型 siSequn
UINT
无符号值(其大小依赖于操作系统)
nHeight
w
WORD
16位无符号值
wPos
f
float 浮点型 fRadiusd
double 双精度型 dAreal
LONG
长整型
lOffset
ld
long double 长双精度型 ldRatedw
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函数的远指针
?
if输入文件流 ifDataFileof
输出文件流 ofStuFilesz
以"\0"结束的字符串 szAppName