C++编码规范.docx
- 文档编号:2398057
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:31
- 大小:26.19KB
C++编码规范.docx
《C++编码规范.docx》由会员分享,可在线阅读,更多相关《C++编码规范.docx(31页珍藏版)》请在冰豆网上搜索。
C++编码规范
C++编码规范
前言
本编码规范针对C++语言。
制定本规范的目的:
●提高代码的健壮性,使代码更安全、可靠
●提高代码的可读性,使代码易于查看和维护
本文档分别对C++程序的格式、注释、标识符命名、语句使用、函数、类、程序组织、公共变量等方面做出了要求。
规范分为两个级别——规则和建议。
规则级的规范要求开发人员必须要遵守,建议级的规范开发人员应尽量遵守。
各项目组在用C++语言或基于C++语言的开发工具开发项目时,要遵守本规范。
编码规范正文
2.1格式
2.1.1空行的使用
规则描述:
●在头文件和实现文件中,各主要部分之间要用空行隔开。
所谓文件的主要部分,包括:
序言性注释、防止被重复包含部分(只在头文件中)、#include部分、#define部分、类型声明和定义部分、实现部分等等。
●在一个函数中,完成不同功能的部分,要用空行隔开。
理由:
段落分明,提高代码的可读性。
2.1.2哪里应该使用空格
规则描述:
●在使用赋值运算符、逻辑运算符、位运算符、算术运算符等二元操作符时,在其两边各加一个空格。
例:
nCount=2;而不是nCount=2;
●函数的各参数间要用“,”和一个空格隔开。
例:
voidGetDate(intx,inty);
而不是voidGetDate(intx,inty)或voidGetDate(intx,inty)。
理由:
提高代码的可读性。
2.1.3哪里不应该使用空格
规则描述:
●不要在引用操作符前后使用空格,引用操作符指“.”和“->”,以及“[]”。
●不要在“:
:
”前后使用空格。
●不要在一元操作符和其操作对象之间使用空格,一元操作符包括“++”、“--”“!
”、“&”“*”等。
理由:
提高代码的可读性。
举例:
//不要象下面这样写代码:
m_pFont->CreateFont();
//应该写成这样
m_pFont->CreateFont();
2.1.4缩进
规范级别:
规则
规则描述:
对程序语句要按其逻辑进行水平缩进,以两个空格或一个Tab符为单位(建议使用空格),使同一逻辑层次上的代码在列上对齐。
理由:
提高代码的可读性。
2.1.5长语句的书写格式
规范级别:
规则
规则描述:
较长的语句要分成多行书写。
长表达式要在低优先级操作符处分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,缩进长度以Tab符长度为单位。
理由:
提高代码的可读性。
举例:
//下面是一个处理的较为合理的例子
nCount=Fun1(n1,n2,n3)
+(nNumber1*GetDate(n4,n5,n6))*nNumber1;
2.1.6清晰划分控制语句的语句块
规范级别:
规则
规则描述:
控制语句(if,for,while,do...whule)的语句部分一定要用‘{’和‘}’括起来(即使只有一条语句),并且‘{’和‘}’应处在同一列上。
理由:
这样做,能够划分出清晰的语句块,使语句的归属明确,使代码更加容易阅读和修改。
举例:
//不要象下面这样写代码:
if(x==0)
return;
else
while(x>min)
x--;
//应该这样写
if(x==0)
{
return;
}
else
{
while(x>min)
{
x--;
}
}
2.1.7一行只写一条语句
规范级别:
规则
规则描述:
一行只写一条程序语句。
理由:
提高代码的可读性。
举例:
//不要这样写
x=x0;y=y0;
while(IsOk(x)){x++;}
//应该这样写代码
x=x0;
y=y0;
while(IsOk(x))
{
x++;
}
2.1.8一次只声明、定义一个变量
规范级别:
规则
规则描述:
一次(一条声明、定义语句)只声明、定义一个变量。
理由:
提高代码的可读性。
举例:
//应该这样写
intwidth;
intlength;
//不要这样写
intwidth,length;
2.1.9在表达式中使用括号
规范级别:
建议
规则描述:
对于一个表达式,在一个二元、三元操作符操作的操作数的两边,应该放置“(”和“)”。
理由:
避免出现不明确的运算、赋值顺序,提高代码的可读性。
举例:
//下面这行代码:
result=fact/100*number+rem;
//最好写成这样
result=((fact/100)*number)+rem;
2.1.10将操作符“*”、“&”和类型写在一起
规范级别:
规则
规则描述:
在定义指针、引用变量时,将操作符“*”、“&”和类型写在一起。
理由:
统一格式,提高代码的可读性。
举例:
//不要象下面这样写代码:
char*s;
//而应该写成这样
char*s;
2.2注释
这一部分对程序注释提出了要求。
程序中的注释是程序与日后的程序读者之间通信的重要手段。
良好的注释能够帮助读者理解程序,为后续阶段进行测试和维护提供明确的指导。
下面是关于注释的基本原则:
1.注释内容要清晰明了,含义准确,防止出现二义性。
2.边写代码边注释,修改代码的同时修改相应的注释,保证代码与注释的一致性。
2.2.1对函数进行注释
规范级别:
规则
规则描述:
●在函数的声明之前,要给出精练的注释(不必牵扯太多的内部细节),让使用者能够快速获得足够的信息使用函数。
格式不做具体要求。
●在函数的定义之前,要给出足够的注释。
注释格式要求如下:
/*************************************************************************
【函数名称】(必需)
【函数功能】(必需)
【参数】(必需。
标明各参数是输入参数还是输出参数。
)
【返回值】(必需。
解释返回值的意义。
)
【开发者及日期】(必需)
【更改记录】(若有修改,则必需注明)
*************************************************************************/
理由:
提高代码的可读性。
2.2.2对类进行注释
规范级别:
规则
规则描述:
●在类的声明之前,要给出足够而精练的注释。
注释格式要求如下:
/*************************************************************************
【类名】(必需)
【功能】(必需)
【接口说明】(必需)
【开发者及日期】(必需)
【更改记录】(若修改过则必需注明)
*************************************************************************/
理由:
提高代码的可读性。
2.2.3对文件进行注释
规范级别:
规则
规则描述:
在头文件、实现文件的首部,一定要有文件注释,用来介绍文件内容。
注释格式要求如下:
/*************************************************************************
【文件名】(必需)
【功能模块和目的】(必需)
【开发者及日期】(必需)
【版权信息】(必需)
【更改记录】(若修改过则必需注明)
*************************************************************************/
理由:
提高代码的可读性。
2.2.4对每个空循环体要给出确认性注释
规范级别:
建议
规则描述:
建议对每个空循环体给出确认性注释。
理由:
提示自己和别人,这是空循环体,并不是忘了。
举例:
while(g_bOpen==FALSE)
{
//空循环
}
2.2.5对多个case语句共用一个出口的情况给出确认性注释
规范级别:
建议
规则描述:
建议对多个case语句共用一个出口的情况给出确认性注释。
理由:
提示自己和别人,这几个case语句确实是共用一个出口,并不是遗漏了。
举例:
switch(nNumber)
{
case1:
nCount++;
break;
case2:
case3:
nCount--;
break;//当nNumber等于2或3时,进行同样的处理
default:
break;
}
2.2.6其它应该考虑进行注释的地方
规范级别:
建议
规则描述:
除上面说到的,对于以下情况,也应该考虑进行注释:
●变量的声明、定义。
通过注释,解释变量的意义、存取关系等;
例如:
intm_nNumber;//记录图形个数。
被SetDate()、GetDate()使用。
●数据结构的声明。
通过注释,解释数据结构的意义、用途等;
例如:
//定义结构体,存储元件的端点。
用于将新旧的端点对应。
typedefstruct
{
intnBNN;
intnENN;
intnBNO;
intnENO;
}Element;
●分支。
通过注释,解释不同分支的意义;
例如:
if(m_iShortRadio==0)//三相的情况
{
strvC.Format("%-10.6f",vC);
straC.Format("%-10.6f",aC);
}
elseif(m_iShortRadio==1)//两相的情况
{
strvC=_T("");
straC=_T("");
}
●调用函数。
通过注释,解释调用该函数所要完成的功能;
例如:
SetDate(m_nNumber);//设置当前的图形个数。
●赋值。
通过注释,说明赋值的意义;
例如:
m_bDraw=true;//将当前设置为绘图状态
●程序块的结束处。
通过注释,标识程序块的结束。
例如:
if(name==White)
{
…
if(age==20)
{
…
}//年龄判断、处理结束
…
}//姓名判断、处理结束
其它有必要加以注释的地方;
理由:
提高代码的可读性。
2.2.7行末注释尽量对齐
规范级别:
建议
规则描述:
同一个函数或模块中的行末注释应尽量对齐。
理由:
提高代码的可读性。
举例:
nCount=0;//计数器,表示正在处理第几个数据块
BOOLbNeedSave;//是否保存从服务器返回的数据
BOOLbReturnCache;//是否将Cache中的内容返回客户端
DWORDBytesWritten;//写入的数据长度
2.2.8注释量
规范级别:
规则
规则描述:
注释行的数量不得少于程序行数量的1/3。
2.3命名
对标识符和文件的命名要求。
2.3.1标识符命名要求
规范级别:
规则
规则描述:
在程序中声明、定义的变量、常量、宏、类型、函数,在对其命名时应该遵守统一的命名规范。
具体要求如下:
l一般变量
一般变量名应以小写字母打头,各英文描述单词的首字母分别大写,其
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 编码 规范
![提示](https://static.bdocx.com/images/bang_tan.gif)