ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:27.89KB ,
资源ID:15750293      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15750293.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VC++ 编程规范Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VC++ 编程规范Word文档下载推荐.docx

1、类、结构、函数、变量、常量(包括资源、自定义消息)、宏、自定义类型等命名的主要原则是: 使用有意义的单词或多个词组合,一目了然。不要使用人名、项目组名 命名时请考虑名字的唯一性,不要使用容易引起混淆的名称。 长短要合适。多个词组合较长时, 可以使用单词的缩写 主要采用Windows的命名风格1. 对于类、函数和变量,每个单词的首字符大写, 其余小写2. 常量和宏定义全部大写3. 自己定义的类型(使用了typedef)全部大写,指针使用LP大写前缀不要用MyFile.cpp,test1.h,bitmap001.bmp, nByte, CClass等等没有意义的名字。临时使用的文件的名字要用函数生

2、成,避免使用“硬名字”,如temp.123。不能使用程序员的姓名或缩写来命名,如yls.cpp。3.1. 类的命名 以大写的C开头,采用如下格式:CXXXYYYYY其中 XXX 指的是模块名称的缩写,参见附录2。 YYYYY是类本身的名称例如: CAdmDlgSearchID3.2. 结构/自定义类型 结构/联合命名使用typedef后必须全部大写,单词中间可以使用下划线连接。 如果不使用typedef,则在全部大写的名字前加st。 结构变量的命名应尽量使用该结构的缩写前缀。前缀使用两个以上的小写字母。 自己定义的类型(使用了typedef)全部大写,指针使用LP大写前缀3.3. 函数 使用动

3、宾词组表达函数实际所作的事 同名的函数(重载函数)在功能上应该完全相同, 在参数上的差别也应一目了然 不得出现名字非常相近但功能不同的函数. 如 CreatePage1(), CreatePage2()等3.4. 变量变量命名原则上使用匈牙利命名法,一般由“前缀类型修饰主体”等部分组成,如: g_strRegHome 前缀(以下划线分割)g_ :表示全局变量(包含全局静态变量) 如: g_lpEnvt_ :表示线程的全局变量: 如: int _declspec(thread) t_nCountm_ :表示类成员变量(包含类静态变量) 如: m_dwFlagsg_str :表示全局的字符串常量

4、如: const TCHAR g_strRegHome = _T(“SoftwareFounderFounder Author Tool4.0”); 类型修饰(小写字母),参见附录1。 主体使用一个或多个单词表示变量代表的确切含义, 参见下面的大小写规则窗口菜单句柄等命名: hWndxxxx, hMenuxxxx3.5. 常量(包括资源、自定义消息,枚举,宏等) 宏定义和常量全要用大写 自定义的消息 WM_A_ 资源ID的命名:参见附录2:资源ID的命名。 枚举类型:命名方式类似结构,相应的前缀为enum。枚举值的命名一律大写(等同于宏)。枚举变量的命名按整数命名。 内部的限制量,如列表的最大

5、长度,文件名的最大长度等,统一使用MAX_xxxx_xxxx_LEN来命名,并集中放置在一个头文件中。数据库相关的限制值放在另一个头文件中定义。4. 编程规则4.1. 类 对自己定义的复杂类一定提供构造和析构函数, 析构函数前一律加virtual,防止因继承而产生的memory leak。(有两种特殊情况:1.部支持位拷贝。2.某些特殊情况析构函数必须不是虚函数?) 在构造函数中初始化所有的成员变量,在析构函数中删除可能申请的内存空间。 推荐采用公开的Get/Set函数对成员变量进行存储,而把成员变量设成protected或者private,并加上注释。 声明成员函数和变量时要按功能分组,给外

6、部用的要排在前面 类的继承深度不要超过4层 类的功能要单一,公共函数个数一般要小于20个(专门用于保存数据的类除外)内部protected函数以及private函数个数一般应小于20个4.2. 函数 长度一般禁止超过200行 必须检查输入值是否合法 实现(成员)函数功能之前必须使用ASSERT()对输入参数的合法性进行检查,尤其你定义的(成员)函数给别人调用时,要判断其合法性。 函数返回值。函数有返回值的时候,一般需要对返回值进行判断,除非有充分的理由确认一定能执行成功。根据返回值的结果决定后续的操作。特别指出的是:new/CoCreateInstance 一个对象之后,一定要判断对象是否创建

7、成功。 如果不成功,如何处理,如果成功如何处理。 调用函数时要严格按照接口规范调用,调用后要判断执行情况,并做适当的错误处理(稍后会给出错误和异常处理规范)。 函数出口。为了程序跟踪调试方便,所有函数请尽量保持最少的出口,如果可能,请保持一个出口。4.3. 变量 初始化。当声明一个变量时,编译器是不会自动将之清零的,所以务必要自己初始化一下变量。 布尔变量统一使用 BOOL(TRUE, FALSE),不要使用bool(true, false)在VC4.2及之前版本, sizeof(bool) = 4.在VC5及更高的版本, sizeof(bool) = 1,而在VC中, BOOL 定义为 in

8、t 型 一律用显式类型转换 float和BOOL禁止用=判断。BOOL应该用逻辑运算关系符,而float应该用差值区间来判断“相等”。 在涉及永久存储和必须确保数据结构的长度不变的情况下,一定要使用固定长度的数据类型,比如_int8, _int16, _int32, _int64 类型的长度一律用sizeof()获得比如int的长度原来是2 bytes, 现在是4 bytes, 等IA-64出来后就会变成8 bytes.4.4. 常量 禁止直接引用常量,而应该用通过#define和enum以及资源来引用。在程序中不要直接使用常量(如0.00001、“Error!”等),而要使用相应的枚举类型、

9、常量定义和资源。具体来说,对于只有相对意义的常量,请使用枚举类型;对于有绝对数值意义的常量请使用常量定义(如:#define CP_EPSILON 0.00001);对于程序中要显示给最终用户看到的字符串常量,请使用字符串资源(如:AfxMessageBox(“Error!”),请改为AfxMessageBox (IDS_CP_ERROR_MSG )。枚举和常量定义一般直接放在头文件中。对于字符串常量,可以放在头文件中,也可以放到资源文件中。前者的好处是便于移植(因为它跟Windows的资源没有关系),后者的好处是便于本地化(因为可以直接修改可执行文件的资源),请根据实际情况处理。在编写简易测

10、试程序或者记录内部调试信息时,可以直接使用字符串常量,而不必去引用资源。4.5. 指针(包括数组) 指针变量声明的书写风格:类型后面紧跟*号.DWORD* m_pdw. / 建议采用DWORD *m_pdw. / 不推荐DWORD * m_pdw. / 不推荐 指针变量必须初始化。 对于类的成员变量,可以在构造函数里初始化。对于函数内部局部变量,声明时就请初始化。如 DWORD* pdwFrame = NULL; 删除指针前请判定指针是否为NULL。删除后把指针置为NULL(即恢复初始状态) 严格防止越界对数组和缓冲区进行检查,防止越界,尤其是变长的情况下。你申请多少空间,就只能用多少。越界使

11、用往往是造成程序无故突然退出的祸首,也是各种安全漏洞的根源。禁止使用strcpy, sprintf等函数,而要用strncpy, snprintf等函数替代。 同一指针new和delete时用的类型一定要完全一致 char* p = new char10;int* p1 = (int*)p; 错误的删除方法:delete p1; / wrong 正确的删除方法:delete (char*)p1; / right 或者:delete p;删数组用delete new一个实例和多个实例时的delete方法不一样: new charn 和 delete 对应。 new char和delete对应。4

12、.6. 流程控制 除非特别必要,一般不用goto4.7. 宏和表达式 定义宏时,参数使用扩号,结果也应扩起来,如: #define SUB(a,b) (a)-(b)这可确保如下形式的调用不会出错:3*SUB(3,4-5) 如果有 & 、 | 、 ! 等逻辑运算符,请把它们作用的表达式用 ( ) 扩起来。4.8. 字符串 尽量不要使用CString定义数据成员;可以使用CString定义局部临时变量。原因:1)由于 CString 的方法大都会 Throw 异常,而使用过程中,又每一步调用都检查是否发生异常又很不方便。这样容易导致异常发生,而又非常难以定位错误;2)由于CString操作不停地申

13、请、释放小块内存,将导致系统效率降低 建议使用: TCHAR, 它屏蔽了字符类型(Unicode / ANSI )。在这两种字符下,TCHAR都工作正常。数据类型定义:TCHAR*, TCHAR, 用固定长度数组,或者通过长度变量使用未知长度的数组。接口参数定义:使用 BSTR,它指向的是宽字节字符串) (BSTR :Basic STRing) 是结构化数据类型,它前面的4个Byte包含的是字符串的长度。4.9. const的使用 不需要修改的类的成员变量的成员函数,将之声明为const,这样可以保证不出现不必要的修改。 DWORD CBirthDay:GetBirthYear() const return m_dwYear; Get函数应该用const关键字修饰。 输入参数要有适当的用const修饰当不需要修改输入参数时,应该将输入参数声明为const;一种比较重要的情况是,需要输入的参数是一个类的实例时,请使用引用,或者指针。严禁直接传送实例,那样不仅效率低,而且易出错,不会带来任何好处。5. 程序版式5.1. 注释 在你劳神的地方请加上详细的注释说明。除了最简单的存取成员变量的Set_/Get_成员函数之外,其余大部分的函数写上注释是良好的习惯。尽量使你的程序让

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1