C++编码规范.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C++编码规范.pdf》由会员分享,可在线阅读,更多相关《C++编码规范.pdf(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+编码规范刖S本编码规范针对C+语言。制定本规范的目的:提高代码的健壮性,使代码更安全、可靠 提高代码的可读性,使代码易于查看和维护本文档分别对C+程序的格式、注释、标识符命名、语句使用、函数、类、程序组织、公共变量等方面做出了要求。规范分为两个级别规则和建议。规则级的规范要求开发人员必须要遵守,建议级的规范开发人员应尽量遵守。各项目组在用C+语言或基于C+语言的开发工具开发项目时,要遵守本规范。编码规范正文2.1 格式2.1.1 空行的使用规则描述:在头文件和实现文件中,各主要部分之间要用空行隔开。所谓文件的主要部分,包括:序言性注释、防止被重复包含部分(只在头文件中)、#include部
2、分、#define部分、类型声明和定义部分、实现部分等等。在一个函数中,完成不同功能的部分,要用空行隔开。理由:段落分明,提高代码的可读性。2.1.2 哪里应该使用空格规则描述:在使用赋值运算符、逻辑运算符、位运算符、算术运算符等二元操作符时,在其两边各加一个空格。例:nCount=2;而不是 nCount=2;函数的各参数间要用“,”和一个空格隔开。例:void GetDate(int x,int y);而不是 void GetDate(int x,inl y)或 void GetDate(int x,int y)。理由:提高代码的可读性。2.1.3 哪里不应该使用空格规则描述:不要在引用操
3、作符前后使用空格,引用操作符指“.”和以及“0”。不要在“:”前后使用空格。不要在一元操作符和其操作对象之间使用空格,一元操作符包括“*”等 o理由:提高代码的可读性。举例:/不要象下面这样写代码:m_pFont-CreateFont();应该写成这样m_pFont-CreateFont();2.1.4 缩进规范级别:规则规则描述:对程序语句要按其逻辑进行水平缩进,以两个空格或一个Tab符为单位(建议使用空格),使同一逻辑层次上的代码在列上对齐。理由:提高代码的可读性。2.1.5 长语句的书写格式规范级别:规则规则描述:较长的语句要分成多行书写。长表达式要在低优先级操作符处分新行,操作符放在新
4、行之首,划分出的新行要进行适当的缩进,缩进长度以Tab符长度为单位。理由:提高代码的可读性。举例:/下面是一个处理的较为合理的例子nCount=Fun l(nl,n2,n3)+(nNumberl*GetDate(n4,n5,n6)*nNumberl;2.1.6清晰划分控制语句的语句块规范级别:规则规则描述:控制语句(if,for,while,do.whule)的语句部分一定要用 和 括起来(即使只有一条语句),并 且 和 应处在同一列上。理由:这样做,能够划分出清晰的语句块,使语句的归属明确,使代码更加容易阅读和修改。举例:/不要象下面这样写代码:if(x=0)return;elsewhile
5、(x min)x-;/应该这样写if(x=0)(return;)else(while(x min)x-;2.1.7 一行只写一条语句规范级别:规则规则描述:一行只写一条程序语句。理由:提高代码的可读性。举例:/不要这样写x=xO;y=yO;while(IsOk(x)x+;/应该这样写代码x=xO;y=y0;while(IsOk(x)X+;)2.1.8 一次只声明、定义一个变量规范级别:规则规则描述:一 次(一条声明、定义语句)只声明、定义一个变量。理由:提高代码的可读性。举例:/应该这样写int width;int length;/不要这样写int width,length;2.1.9 在表达
6、式中使用括号规范级别:建议规则描述:对于个表达式,在一个二元、三元操作符操作的操作数的两边,应 该 放 置 和理由:避免出现不明确的运算、赋值顺序,提高代码的可读性。举例:/下面这行代码:result=fact/100*number+rem;/最好写成这样result=(fact/100)*number)+rem;2.1.10将 操 作 符 和 类 型 写 在 一 起规范级别:规则规则描述:在定义指针、引用变量时,将 操 作 符 和 类 型 写 在 一 起。理由:统一格式,提高代码的可读性。举例:/不要象卜面这样写代码:char*;而应该写成这样char*s;2.2注释这一部分对程序注释提出了
7、要求。程序中的注释是程序与日后的程序读者之间通信的重要手段。良好的注释能够帮助读者理解程序,为后续阶段进行测试和维护提供明确的指导。下面是关于注释的基本原则:1.注释内容要清晰明了,含义准确,防止出现二义性。2.边写代码边注释,修改代码的同时修改相应的注释,保证代码与注释的一致性。2.2.1 对函数进行注释规范级别:规则规则描述:在 函数的声明之前,要给出精练的注释(不必牵扯太多的内部细节),让使用者能够快速获得足够的信息使用函数。格式不做具体要求。在 函数的定义之前,要给出足够的注释。注释格式要求如下:【函数名称】(必需)【函数功能】(必需)【参 数】(必 需。标明各参数是输入参数还是输出参
8、数。)【返 回 值】(必 需。解释返回值的意义。)【开发者及日期】(必 需)【更改记录】(若有修改,则必需注明)理由:提高代码的可读性。2.2.2对类进行注释规范级别:规则规则描述:在类的声明之前,要给出足够而精练的注释。注释格式要求如下:【类 名】【功 能】(必 需)(必 需)【接 口 说 明】(必 需)【开发者及日期】(必需)【更改记录】(若修改过则必需注明)理 由:提高代码的可读性。2.2.3对文件进行注释规范级别:规则规则描述:在头文件、实现文件的首部,一定要有文件注释,用来介绍文件内容。注释格式要求如下:/*【文 件 名】(必 需)【功能模 块 和 目的】(必 需)【开发者及日期】(
9、必 需)【版 权 信 息】(必 需)【更改记录】(若修改过则必需注明)理由:提高代码的可读性。2.2.4 对每个空循环体要给出确认性注释规范级别:建议规则描述:建议对每个空循环体给出确认性注释。理由:提示自己和别人,这是空循环体,并不是忘了。举例:while(g_bOpen=FALSE)(空循环)2.2.5 对多个case语句共用一个出口的情况给出确认性注释规范级别:建议规则描述:建议对多个case语句共用一个出口的情况给出确认性注释。理由:提示自己和别人,这几个case语句确实是共用一个出口,并不是遗漏了。举例:switch(nNumber)(case 1:nCount+;break;cas
10、e 2:case 3:nCount;break;/当 nNumber等于2 或 3 时,进行同样的处理default:break;2.2.6其它应该考虑进行注释的地方规范级别:建议规则描述:除上面说到的,对于以下情况,也应该考虑进行注释:变量的声明、定义。通过注释,解释变量的意义、存取关系等;例如:int m_nNumber;/记录图形个数。被 SetDate()、GetDate()使用。数据结构的声明。通过注释,解释数据结构的意义、用途等;例如:定义结构体,存储元件的端点。用于将新旧的端点对应。typedef struct(int nBNN;int nENN;int nBNO;int nEN
11、O;Element;分支。通过注释,解释不同分支的意义;例如:if(m_iShortRadio=0)三相的情况(strvC.Format(%-10.6f,vC);straC.Format(%-10.6f,aC);)else if(m_iShortRadio=1)两相的情况(strvC=_T();straC=_T();)调用函数。通过注释,解释调用该函数所要完成的功能;例如:SetDate(m_nNumber);设置当前的图形个数。赋值。通过注释,说明赋值的意义;例如:m_bDraw=true;将当前设置为绘图状态 程序块的结束处。通过注释,标识程序块的结束。例如:if(name=White)|
12、if(age=20)(/年龄判断、处理结束 姓名判断、处理结束其它有必要加以注释的地方;理由:提高代码的可读性。2.2.7 行末注释尽量对齐规范级别:建议规则描述:同一个函数或模块中的行末注释应尽量对齐。理由:提高代码的可读性。举例:nCount=0;计数器,表示正在处理第儿个数据块BOOL bNeedSave;是否保存从服务器返回的数据BOOL bReturnCache;是否将Cache中的内容返回客户端DWORD BytesWritten;写入的数据长度2.2.8 注释量规范级别:规则规则描述:注释行的数量不得少于程序行数量的1/3 o2.3命名对标识符和文件的命名要求。2.3.1 标识符
13、命名要求规范级别:规则规则描述:在程序中声明、定义的变量、常量、宏、类型、函数,在对其命名时应该遵守统一的命名规范。具体要求如下:!1 一般变量一般变量名应以小写字母打头,各英文描述单词的首字母分别大写,其他字母一律小写。对于不同作用域的变量,其命名要求如下表所示:表 2-1 变量命名变量种类前缀要求示例全局变量g-g_Number全局指针变量g-Pg_pNumber对象级变量(类内数据成员)文件作用域变量(文件中静态变量)m_m_Number对象级指针变量(类内指针数据成员)文件作用域指针变量(文件中静态指针变量)m_pm_pN umber函数级变量(局部变量)无要求number函数级指针变
14、量(局部指针变量)PpNumber上表列出了对变量命名的基本要求。项目组或程序员可在该要求上再进行细化,但必须保证符合该要求。!1常量常量的名字要全部大写。常量指:const 修饰的量。如 const int NUMBER=100;枚举量。如 enum0NE,TWO,THREE;!宏所有用宏形式定义的名字,包括宏常量和宏函数,名字要全部大写。!类型自定义类型名应以大写字母打头。C+中自定义类型包括:class、struct、enum、union、typedef声明的类型、namespaceo例如:typedef struct Student;class CMsgDialog;!函数函数名应以大
15、写字母打头。例如:void GetCount();下面还有一些在命名时应该遵守的基本规范:;名中含多于一个单词时,每个单词的第一个字母大写。例如:m_LastCount中要大写L 和 C;!不要使用以下划线“,打头的标识符。例如:_bFind是不允许出现的变量;!不要使用仅用大小写字母区分的名称。例如:m_bFind 和 M_BFIND;!尽量使用有意义的名字。应做到见其名知其意。例如:m_strError表示错误的字符串;理由:减少命名冲突;提高代码的可读性。2.3.2 标识符长度要求规范级别:规则规则描述:在程序中声明、定义的变量、常量、宏、类型、函数,它们的名字长度要在4 至 25 个字
16、符之 内(下限不包括前缀,上限包括名字中所有的字符)。对于某些已经被普遍认同的简单命名,可不受本规则的限制。如 for循环的循环记数变量,可 使 用 i、j 等简单字符命名。理由:名字长度应该在一个恰当的范围内,名字太长不够简洁,名字太短又不能清晰表达含义。2.3.3 文件命名要求规范级别:建议规则描述:代码文件的名字要与文件中声明、定义的类的名字基本保持一致,使类名与类文件名建立联系。理由:使应用程序容易理解。举例:将类CMsgDialog的头文件和实现文件命名为msgdialog.h和 msgdialog.cpp就是 种比较简单、恰当的方法。2.4语句对具体程序语句的使用要求。2.4.1
17、条程序语句中只包含一个赋值操作符规范级别:建议规则描述:在一条程序语句中,只应包含一个赋值操作符。赋值操作符包括:=,&=,l=,A=,理由:避免产生不明确的赋值顺序。举例:/不要这样写b=c=5;a=(b*c)+d+;/应该这样写c=5;b=c;a=(b*c)+d;d+;2.4.2不要在控制语句的条件表达式中使用赋值操作符规范级别:建议规则描述:不要在控制语句if,while,fo r和 switch的条件表达式中使用赋值操作符。赋值操作符包括:=,+=,_=,*=,/=,%=,=,=,&=,|=,入=,+,一。理由:一个类似于if(x=y)这样的写法是不明确、不清晰的,代码的作者也许是想写
18、成这样:if(x=y)。举例:不要象下面这样写代码:if(x-=dx)()应该这样写:x-=dx;if(x)2.4.3赋值表达式中的规定规范级别:建议规则描述:在一个赋值表达式中:一个左值,在表达式中应该仅被赋值一次。对于多重赋值表达式,-个左值在表达式中仅应出现一次,不要重复出现。理由:避免产生不明确的赋值顺序。举例:不要像下面这样写代码:i=ti+;/一个左值,在表达式中应该仅被赋值一次a=b=c+a;对于多重赋值表达式,一个左值在表达式中仅应出现一次,不能重复出现。i=ti=15;对于多重赋值表达式,一个左值在表达式中仅应出现一次,不能重复出现。2.4.4使用正规格式的布尔表达式规范级别
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 编码 规范
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内