C++命名规则.doc_第1页
C++命名规则.doc_第2页
C++命名规则.doc_第3页
C++命名规则.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+变量命名规则 a Array 数组b BOOL (int) 布尔(整数)by Unsigned Char (Byte) 无符号字符(字节)c Char 字符(字节)cb Count of bytes 字节数cr Color reference value 颜色(参考)值cx Count of x (Short) x的集合(短整数)dw DWORD (unsigned long) 双字(无符号长整数)f Flags 标志(一般是有多位的数值)fn Function 函数g_ global 全局的h Handle 句柄i Integer 整数l Long 长整数lp Long pointer 长指针m_ Data member of a class 一个类的数据成员n Short int 短整数p Pointer 指针s String 字符串sz Zero terminated String 以0结尾的字符串tm Text metric 文本规则u Unsigned int 无符号整数ul Unsigned long (ULONG) 无符号长整数w WORD (unsigned short) 无符号短整数x,y x, y coordinates (short) 坐标值/短整数v void 空g_ 全局变量 g_ServersC 类或者结构体 CDocument,CPrintInfom_ 成员变量 m_pDoc,m_nCustomersVC常用前缀列表:前缀 类型 描述 例子ch char 8位字符 chGradech TCHAR 16位UNICODE类型字符 chNameb BOOL 布尔变量 bEnabledn int 整型(其大小由操作系统决定) nLengthn UINT 无符号整型(其大小由操作系统决定) nLengthw WORD 16位无符号整型 wPosl LONG 32位有符号整型 lOffsetdw DWORD 32位无符号整型 dwRangep * Ambient memory model pointer 内存模块指针,指针变量 pDoclpFAR* 长指针 lpDoclpsz LPSTR 32位字符串指针 lpszNamlpsz LPCSTR 32位常量字符串指针 lpszNamelpsz LPCTSTR 32位UNICODE类型常量指针 lpszNameh handle Windows对象句柄 hWndlpfn (*fn)() 回调函数指针 Callback Far pointer to CALLBACK function lpfnAbortWindows对象名称缩写: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; HFONThFont; 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 10x6FFFIDD_ 对话框资源(Dialog) IDD_SPELL_CHECK 1 0x6FFFHIDD_ 基于对话框的上下文帮助 HIDD_SPELL_CHECK 0x200010x26FFIDB_ 位图资源(Bitmap) IDB_COMPANY_LOGO 10x6FFFIDC_ 光标资源(Cursor) IDC_PENCIL 10x6FFFIDI_ 图标资源(Icon) IDI_NOTEPAD 10x6FFFID_ /IDM_ 工具栏或菜单栏的命令项 ID_TOOLS_SPELLING 0x80000xDFFFHID_ 命令上下文帮助 HID_TOOLS_SPELLING 0x180000x1DFFFIDP_ 消息框提示文字资源 IDP_INVALID_PARTNO 80xDFFFHIDP_ 消息框上下文帮助 HIDP_INVALID_PARTNO 0x300080x3DFFFIDS_ 字符串资源(String) IDS_COPYRIGHT 10x7FFFIDC_ 对话框内的控制资源 IDC_RECALC 80xDFFFWindows.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 *)相同,可以用来代替LPSTRC+ 命名规范在一个项目中,命名风格保持一致,否则会降低源码的可读性。 命名必须要注意的两点:1)永远不要使用晦涩的名字2)总是使用全大写字母表示宏和常量 匈牙利命名法:匈牙利命名法的一个特点是将类型信息混入名称中,例如:int nNum = 0; / n 为类型信息,表明 nNum 是一个 int 类型class CUser; / C 为类型信息,表明 CUser 是一个类通常的观点认为,在名称中加入类型信息会增加代码的可读性,实际上,这种效果甚微。加入类型信息的不良表现之一是降低可维护性,一个很简单的例子:class CUserprivate: int m_nID;如果出现某种情况导致需要修改 m_nID 的类型为 long,那么 m_nID 应该改名字为 m_lID,那么意味着要在整个类中修改 m_nID。更糟糕的情况是:class CHomepublic: void f();void CHome:f() int nID = m_pUser-GetID(); / nID 需要改成 lID / 下面大量使用 nID可见,CHome 中的 f 函数的局部变量 nID 在 id 类型由 int 变成 long 时也受到了影响。总的来说是将类型信息引入名称中致使维护成本增加,我们本无需因为类型的改变维护名称,匈牙利命名法将类型绑定在名称上,使得必须在类型变动时维护名称。在泛型编程中,几乎无法使用匈牙利命名法,因为具体的类型信息并不存在。除非你使用纯文本编辑器,否则名称中加入类型信息的做法不会为你增加任何可读性(现代的 IDE 甚至是一些高级文本编辑器,在你用鼠标点击到变量名称上时,就能显示变量的类型),它已经过时了。 一套可行的命名规范:1)类名、枚举名、结构名、联合名、typedef 定义的类型名、函数名可以使用 LikeThis 的命名方式。2)变量名使用诸如 likeThis 的命名方式(首字母小写)3)类成员变量名前加 m_ 例如:class User int m_id;全局变量前加 g_ 例如:int g_id;静态变量使用 s_ 例如:static int s_id;这里说明一下,为什么需要把作用域和链接性信息融入名称中:变量作用域和链接性改变的情况是很少的,例如,很少的情况下会把一个成员变量改成静态变量编程中使用的工具常常不会直观的显示变量的作用域和链接性在许多高质量的代码中,均不同程度的将作用域信息融入变量名称中(通常使用 _ 来表明其作用域)对于静态类成员变量,通常使用如下方式表示:template class Singleton

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论