最全C 命名规则
- 格式:pdf
- 大小:166.45 KB
- 文档页数:5
总的来说是将类型信息引入名称中致使维护成本增加,我们本无需因为类型的改变维护名称,匈牙利命名法将类型 绑定在名称上,使得必须在类型变动时维护名称。 在泛型编程中,几乎无法使用匈牙利命名法,因为具体的类型信息并不存在。 除非你使用纯文本编辑器,否则名称中加入类型信息的做法不会为你增加任何可读性(现代的 IDE 甚至是一些高 级文本编辑器,在你用鼠标点击到变量名称上时,就能显示变量的类型) ,它已经过时了。
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 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
最全 C++变量命名规则
a b by c cb cr cx dw f fn g_ h i l lp m_ n p s sz tm u ul w x,y v g_ C m_ Array 数组 BOOL (int) 布尔(整数) Unsigned Char (Byte) 无符号字符(字节) Char 字符(字节) Count of bytes 字节数 Color reference value 颜色(参考)值 Count of x (Short) x 的集合(短整数) DWORD (unsigned long) 双字(无符号长整数) Flags 标志(一般是有多位的数值) Function 函数 global 全局的 Handle 句柄 Integer 整数 Long 长整数 Long pointer 长指针 Data member of a class 一个类的数据成员 Short int 短整数 Pointer 指针 String 字符串 Zero terminated String 以 0 结尾的字符串 Text metric 文本规则 Unsigned int 无符号整数 Unsigned long (ULONG) 无符号长整数 WORD (unsigned short) 无符号短整数 x, y coordinates (short) 坐标值/短整数 void 空 全局变量 g_Servers 类或者结构体 CDocument,CPrintInfo 成员变量 m_pDoc,m_nCustomers
C++ 命名规范
在一个项目中,命名风格保持一致,否则会降低源码的可读性。
命名必须要注意的两点: 1)永远不要使用晦涩的名字 2)总是使用全大写字母表示宏和常量
匈牙利命名法: 匈牙利命名法的一个特点是将类型信息混入名称中,例如: int nNum = 0; // n 为类型信息,表明 nNum 是一个 int 类型 class CUser; // C 为类型信息,表明 CUser 是一个类 通常的观点认为,在名称中加入类型信息会增加代码的可读性,实际上,这种效果甚微。加入类型信息的不良表现 之一是降低可维护性,一个很简单的例子: class CUser { private: int m_nID; } 如果出现某种情况导致需要修改 m_nID 的类型为 long,那么 m_nID 应该改名字为 m_lID,那么意味着要在整个 类中修改 m_nID。更糟糕的情况是: class CHome { public: void f(); } void CHome::f() { int nID = m_pUser->GetID(); // nID 需要改成 lID // 下面大量使用 nID } 可见,CHome 中的 f 函数的局部变量 nID 在 id 类型由 int 变成 long 时也受到了影响。
不要取带 o,l 的名字,易与0,1混淆。取名字也是门艺术。
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 位字符串指针 lpszNam lpsz LPCSTR 32 位常量字符串指针 lpszName lpsz LPCTSTR 32 位 UNICODE 类型常量指针 lpszName h handle Windows 对象句柄 hWnd lpfn (*fn)() 回调函数指针 Callback Far pointer to CALLBACK function lpfnAbort
一套可行的命名规范: 1)类名、枚举名、结构名、联合名、typedef 定义的类型名、函数名可以使用 LikeThis 的命名方式。 2)变量名使用诸如 likeThis 的命名方式(首字母小写) 3)类成员变量名前加 m_ 例如: class User { int m_id; } 全局变量前加 g_ 例如: int g_id; 静态变量使用 s_ 例如: static int s_id; 这里说明一下,为什么需要把作用域和链接性信息融入名称中: <1>变量作用域和链接性改变的情况是很少的,例如,很少的情况下会把一个成员变量改成静态变量 <2>编程中使用的工具常常不会直观的显示变量的作用域和链接性 <3>在许多高质量的代码中,均不同程度的将作用域信息融入变量名称中(通常使用 "_" 来表明其作用域) 对于静态类成员变量,通常使用如下方式表示: template <typename T> class Singleton { protected: static T* ms_instance; // 作用域前于链接性 } 4)宏和常量使用 LIKE_THIS 的命名方式 5)namespace 使用小写字母命名 6)接口使用 ILikeThis 的命名方式 //另外全局变量,局部静态变量要使用长一点的具有可读性的名字,取如 i,x 的名字易在小作用域中被屏蔽掉。也