编程的命名规则,我第一反应就会想到匈牙利命名法。匈牙利命名法我都不想多说,因为网上的文章一大把,大家自己去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 |
| 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; |