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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

C++语言程序设计代码规范Word格式文档下载.docx

1、UINT, ULONG,WORD,DWORD等。bbool 类型p表示指针,在Win32平台下使用p, 而不是lp。hWindows API内部的各种HANDLE。szchar 或者 char_w类型的数组或者字符串常量。wndWindows窗口,所有MFC窗口对象都以wnd缀开头。包括:CView,CDialog,CFrameWnd,CButton等。ptPOINT, CPointclrCOLORREF,其它用来表示颜色的数值类型dcCDC类penCPenbrushCBrushvectorstd:listlist, CListmapmap, CMaparrayCArrayititerator

2、c, w, dw用于要求明确区分数据类型长度的情况下,如跨平台的网络通讯,或磁盘读取。注意,尽量使用n作为前缀,而不是这些字符前缀。对于其他不在上面表中的结构、类等复杂数据类型,特别是不常使用的和不通用的,不使用前缀。例如:class Person Jonson;struct DateTime MyDt;在应用场合明确的情况下,例如:简单的局部变量,它的值类型前缀有时可以省略。具体见下面的例子。1.1.4 复合前缀根据以上规则,变量根据它所在的作用域、类型、是否是指针,得到一个复合前缀。char g_szFileName_MAX_PATH; /全局字符串变量char* g_pszFileNam

3、e; /全局字符串指针变量:char s_szFileName_MAX_PATH; /静态字符串变量char* s_pszFileName; /静态字符串指针变量:char _s_szFileName_MAX_PATH; /局部静态字符串变量char* _s_pszFileName; /局部静态字符串指针变量:char m_szFileName_MAX_PATH; /类字符串变量char* m_pszFileName; /类字符串指针变量:char ms_szFileName_MAX_PATH; /类静态字符串变量char* ms_pszFileName; /类静态字符串指针变量:更多的例子,

4、参见下面按照作用域讨论变量名一节。1.1.5 主体用于描述变量的上下文意义。一般地,由首字母大写的一个或者多个单词构成,要求用英语作为描述语言。如:FileName,DateTime。这样就形成了由大小字母夹杂的单词串,这种写法常见于Windows风格的编码。注:全部单词小写,单词之间使用下划线分割,例如:file_name,date_time。这种写法常见于UNIX风格的编码。但是这种命名方式就不能很好地区分缀和主体,所以在本规范中是不推荐的。单个的变量声明使用单数形式,不加任何冠词。CFile _file;数组使用名词复数形式。CFile _files3;一些容器类的作用类似于数组,所以也

5、使用复数命名,例如:CArray _arrayFiles;list _listObjects;1.2 按作用域分类讨论变量命名1.2.1 参数变量函数的参数变量要求由后下划线结尾(见作用域缀一节)。在一些纯数学函数中,也可省去数值类型前缀n,其它类型前缀不能省略。bool Create(PCTSTR pszPathName_);double Add(double a_, double b_); / 值类型前缀省略1.2.2 局部变量由前下划线开头。在纯数学函数中,或者简短的上下文中,也可省去数值类型前缀n,其它类型前缀不能省略。bool _bRet;char _szBuffer_MAX_PAT

6、H/ 下面是一些值类型前缀省略的例子int _i; / 常表示循环变量int _temp;for (int _i = 0; _i _countof(_szBuffer); _i+) float _a; / _a的作用域很短,所以可以省略1.2.3 全局变量使用作用域前缀g_。全局变量因为作用域很大,所以命名一定要规范。名称的主体部分必须能清晰说明变量的意义,并且不得有不规范的缩写。CWinApp g_Application;int g_nVersion;HINSTANCE g_hInstance;1.2.4 静态变量使用作用域前缀s_。 局部静态变量使用前缀_s_,注意看下面的例子。CNcWi

7、nApp s_App;int s_nVersion;HINSTANCE s_hInst;void f() static int _s_nCallTimes;1.2.5 其他例子下面是变量命名的一些例子:extern HINSTANCE g_hInst; /全局变量static int s_nTimer = 0; /全局静态变量int func(int nCounter_, int* pnSize_) /参数变量 /局部变量 long _nTotalItem; static long _s_nCount = 0; int _nVar; LPSTR _pszBuffer; TCHAR _szCac

8、he_MAX_PATH; int _var1; / 省去类型前缀 1.3 常数目前本规范对常数类的命名规范还不是非常清晰。很多常数作用域也很大,类似于全局变量,所以命名一定要规范。常数分成以下几类讨论。1.3.1 宏定义的常数#define定义的常数要求用大写字母和下划线混合命名,但是并不强制要求在每个单词之间插入下划线。#define LEFT 0 / okay#define RIGHT 1 / okay#define UP_DOWN 1 / okay#define Right 1 / not recommended1.3.2 const定义的常数(未完成)const常数员命名既可以遵循一般

9、变量命名法则;也可以遵循常数命名法则;1.3.3 枚举枚举命名:枚举名服从一般变量命名法则。枚举成员命名:枚举成员名既可以遵循一般变量命名法则;1.4 函数命名规范函数命名采用大小写夹杂的动宾结构命名。int GetLastError(); / okayint getlasterror(); / 全小写,不推荐int get_last_error(); /全小写,不推荐int OpenFile();int FileOpen(); / 非动宾结构,不推荐属于同一类的一组函数可以使用共同前缀来标识。int NetGetError();int NetOpen();int NetClose();int

10、 NetSend();int NetReceive();内部实现函数可以使用前下划线作为前缀,例如:class MyClass/ . . .private: void _init();仅在某一个代码文件使用的内部实现函数应定义为静态函数,这可以避免作用域冲突。1.5 结构命名规范结构命名:结构名服从一般变量命名法则。结构成员命名:结构变量名服从一般变量命名法则。struct DateTime int nYear; int nMonth; int nDay; int nHour; int nMinite; int nSecond;本规范不采用对结构成员使用表示结构的前缀。 int dtYear;

11、 / error int dtMonth; int dtDay; / error int dtHour; int dtMinite; int dtSecond;一般说来,结构中不包含成员函数(偶尔,仅仅包含构造函数是允许的)。如果希望把结构改造成包含丰富成员函数的对象,那样的话,请使用类(class)。其命名规范见下面叙述。1.6 类(class)1.6.1 类布局在类中,推荐先是public节的内容,然后是protected节,最后是private节。也推荐参考MFC的类布局,使用/ Construction/ Attributes/ Operations/ Overrides/ Imple

12、mentation等注释来布局。1.6.2 类成员类成员变量:遵循一般变量命名法则,同时要求使用m_前缀。类成员函数:遵循一般函数命名法则;嵌套类、枚举、嵌套结构:遵循一般类、结构命名法则;综合以上,举一例如:class MyClass : public BaseClasspublic: /first MyClass(); MyClass();protected: /then int m_nVar1; int m_nVar2; /last int DoSomething();2 布局规范需要注意的是,非公共接口的结构、类、常数、函数原形不要放在公共头文件中,而是应该放在私有头文件或实现文件中。

13、2.1 文件标头文件标头必须包括版权说明、简短介绍。下面是文件标头的一个例子:/ Copyright (c) Naiky Company. All rights reserved./ Abstract:/ /#include . . .#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif自VC6.0以来,new/delete操作增加了调试版本,对检测内存泄露非常有帮助。所以上面的代码包含这部分内容。2.2 函数说明函数说明是可选的。可以使用中文或者英文编写。一般说来,公开接

14、口、公共函数应该有说明,这样便于代码维护。函数说明有两个地方可以放,一是放在函数声明中,而是放在函数实现中。这两个地方的函数说明有所不同。函数声明处的说明:此处的说明目的是告诉使用者,该函数的用法以及应该注意的问题,应包括函数的作用、入口参数和返回值说明,以及需要注意的声明内容。下面是一个声明处说明的例子:/Description:/ You can fill some description here /Entries:/ Parameter1 about Parameter1/ Parameter2 about Parameter2/ Parameter3 about Parameter3

15、/Return:/ about return value/Note:/ this is an optional section 函数实现处的说明:此处的说明目的是告诉代码维护人员,该函数实现的细节以及在实现过程中需要注意的问题。以下是摘自实际代码的一个例子:/*DESCRIPTION: Get the distance from a 3d-point to a 3d-line.ALGORITHM:A line in 3D is given by the parametric vector with parameter t: / x0 + (x1 - x0) * t L = | y0 + (y1

16、 - y0) * t | -(1) z0 + (z1 - z0) * t /A given point is P = (u1, v1, w1)The distance between the point and the line is therefore r2 = (u1 - x0 - (x1 - x0)*t)2 + (v1 - y0 - (y1 - y0)*t)2 + (w1 - z0 - (z1 - z0)*t)2 -(2)To minimize the distance, take d(r2) / dt = 0 -(3)assume that a = (x1 - x0) u = (u1

17、- x0) b = (y1 - y0) v = (v1 - y0) c = (z1 - z0) w = (w1 - z0)therefore -2a * (u - a*t) - 2b(v - b*t) - 2c(w - c*t) = 0 -(4) a*u + b*v + c*w t = - -(5) a*a + b*b + c*creference to (2), get r2 = (u - a*t)2 + (v - b*t)2 + (w - c*t)2 -(6)PARAMETERS: POINT3DD point_ the given point POINT3DD line0_, POINT

18、3DD line1_ the given lineRETURNS: the power 2 of the distance*/inline double distance2_point_line(POINT3DD point_, POINT3DD line0_, POINT3DD line1_) / . . . 2.3 代码布局代码使用制表符缩进,制表符宽度为4。代码行宽一般不超过80列(不过,现在的显示器越来越大,阅读更加方便,所以可以考虑把代码行宽设定到100列)。超过的部分折行到下一行,折行要求缩进一个制表符。2.3.1 空格使用规范保留字后面空一格。 3; _i+) / okeyfor

19、(int _i = 0; _i+) / not recommendedwhile (true) / okwhile(true) / not recommendedif (a = b) / okswitch (sw) / ok双目操作符左右各空一格,括号(,),)左右不空格。a = b = c; / oka=b=c; / not recommendeda = (b = c) / oka = (b=c) / not recommendeda = ( b = c ) / not recommendeda = (b = (c&d) / not recommendeda = b1 / oka = b 1

20、 / not recommendedif (a = b) / okif ( a = b ) / not recommended单目操作符不空格a+; / ok+a;a * -b;a / ok逗号、分号前面紧贴上一个字符,后面空一格。func(int a_, int b_, int c_) / okfunc(int a_,int b_,int c_) / not recommendedfunc(int a_ , int b_ , int c_) / not recommendedfor (int _loop = 0; _loop _MAX; _loop+) / ok_loop (b) ? (a) : (b)_max(func(), 3) / not recommended!_max(var+, 3) / not recommended!int _a = func();_max(_a, 3) / okey尽量使用inline函数代替函数宏。尽量使用const代替常数宏。3.4 测试代码一些测试代码要用_DEBUG包围起来。/ bad code!if (pszBuffer) ASSERT(strlen(pszBuffer) 100);/ good codeif (pszB

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

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