CC++软件编程规范Word文档下载推荐.docx
- 文档编号:694114
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:81
- 大小:54.99KB
CC++软件编程规范Word文档下载推荐.docx
《CC++软件编程规范Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《CC++软件编程规范Word文档下载推荐.docx(81页珍藏版)》请在冰点文库上搜索。
8.1参数35
8.2返回值36
8.3内部实现36
8.4函数调用39
9可靠性41
9.1内存使用41
9.2指针使用43
9.3类和函数44
10可测试性49
11断言与错误处理51
软件编程规范—C/C++
1前言
本规范规定了虚拟植物软件开发中C/C++语言的编程规范。
本规范适用于动漫部内使用C/C++语言编码的所有虚拟植物相关软件。
本规范自生效之日起,对以后新编写的和修改的代码有约束力。
2术语和定义
下列术语和定义适用于本标准。
2.1规则
编程时必须遵守的约定。
2.2建议
编程时必须加以考虑的约定。
2.3说明
对此规则或建议的必要的解释。
2.4正例
对此规则或建议给出的正确例子。
2.5反例
对此规则或建议给出的反面例子。
3基本原则
【原则】首先是为人编写程序,其次才是计算机。
说明:
这是软件开发的基本要点,软件的生命周期贯穿产品的开发、测试、生产、用户使用、版本升级和后期维护等长期过程,只有易读、易维护的软件代码才具有生命力。
【原则】保持代码的简明清晰,避免过分的编程技巧。
简单是最美。
保持代码的简单化是软件工程化的基本要求。
不要过分追求技巧,否则会降低程序的可读性。
【原则】所有的代码尽量遵循ANSIC标准。
所有的代码尽可能遵循ANSIC标准,尽可能不使用ANSIC未定义的或编译器扩展的功能。
【原则】编程时首先达到正确性,其次考虑效率。
编程首先考虑的是满足正确性、健壮性、可维护性、可移植性等质量因素,最后才考虑程序的效率和资源占用。
【原则】避免或少用全局变量。
过多地使用全局变量,会导致模块间的紧耦合,违反模块化的要求。
【原则】尽量避免使用GOTO语句。
【原则】尽可能重用、修正老的代码。
尽量选择可借用的代码,对其修改优化以达到自身要求。
【原则】尽量减少同样的错误出现的次数。
事实上,我们无法做到完全消除错误,但通过不懈的努力,可以减少同样的错误出现的次数。
4布局
4.1文件布局
【规则】遵循统一的布局顺序来书写头文件。
以下内容如果某些节不需要,可以忽略。
但是其它节要保持该次序。
头文件布局:
文件头(参见第三章“注释”)
#ifndef文件名_H(全大写)
#define文件名_H
其它条件编译选项
#include(依次为标准库头文件、非标准库头文件)
常量定义
全局宏
全局数据类型
类定义
模板(template)(包括C++中的类模板和函数模板)
全局函数原型
#endif
【规则】遵循统一的布局顺序来书写实现文件。
实现文件布局:
常量定义
文件内部使用的宏
文件内部使用的数据类型
全局变量
本地变量(即静态全局变量)
局部函数原型
类的实现
全局函数
局部函数
【规则】头文件必须要避免重复包含。
可以通过宏定义来避免重复包含。
正例:
#ifndefMODULE_H
#defineMODULE_H
[文件体]
#endif
【规则】包含标准库头文件‘括号<
>
,包含非标准库头文件用双引号“”。
#include<
stdio.h>
#include“heads.h”
文件头(参见“注释”一节)
4.2注释
注释有助于理解代码,有效的注释是指在代码的功能、意图层次上进行注释,提供有用、额外的信息,而不是代码表面意义的简单重复。
【规则】C语言的注释符为“/*…*/”。
C++语言中,多行注释采用“/*…*/”,单行注释采用“//…”。
【规则】一般情况下,源程序有效注释量必须在20%以上。
注释的原则是有助于对程序的阅读理解,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。
有效的注释是指在代码的功能、意图层次上进行注释,提供有用、额外的信息。
【规则】注释使用中文。
对于特殊要求的可以使用英文注释,如工具不支持中文或国际化版本时。
【规则】文件头部必须进行注释,包括:
.h文件、.c文件、.cpp文件、.inc文件、.def文件、编译说明文件.cfg等。
注释要采用统一的格式。
文件头部的中文注释:
注释中的各个字段要用空格键对齐,不要使用Tab键对齐,如果代码文件比较独立,注释中的“相关文件”可以空缺。
当代码相对比较稳定后,任何代码修改都应该加在修改纪录中,在代码的修改处也应该有相应的注释。
/*****************************************************************************
*版本所有(C)2010国家农业信息中心动漫部
*****************************************************************************
*模块名:
//模块名
*文件名:
//文件名称
*文件标识:
//配置管理计划书中确定的文件标识
*相关文件:
//和此文件有重要关联的文件
*实现功能:
//简要描述本文件的内容,包括主要模块、函数及其功能说明
*作者:
//作者名字及其部门
*版本:
//当前版本
*完成日期:
//完成日期
*其他说明:
//其他内容的说明
*修改记录:
*日期修改记录号(或版本号)修改人修改内容(包括修改的原因及函数)
*
*****************************************************************************/
文件头部的英文注释:
/*****************************************************************************
*Copyright(C)2001,ZTECorporation
*ModuleName:
*FileName:
*FileMark:
*Correlative:
*Description:
*Author:
*Version:
*Data:
*Others:
*RevisionDetails:
*ModifyDataVersionAuthorModification
【规则】函数头部应进行注释,列出:
函数的目的/功能、输入参数、输出参数、返回值等。
函数的中文注释:
*函数名:
//函数的名称
*功能:
//函数的功能、性能的描述
*输入参数:
//输入参数说明,包括每个参数的作用,取值及参数间的关系
*输出参数:
//函数的输出参数的说明
*返回值说明:
//函数的返回值的说明
*其他说明:
//可选项,对复杂或主要的函数是必须项
函数的英文注释:
*Function:
*Input:
*Output:
*Return:
*Other:
【规则】程序中的定义,申明和实现,应该按照类别分开,并按如下顺序注释。
/***************************************************************************
*IncludeFiles文件引用
***************************************************************************/
*Macros宏定义
*Types类型定义
*ManifestConstants常量
*Variables全局变量
*Functionprototypes函数原型
/***************************************************************************
*GlobalFunctions全局函数实现
*LocalFunctions本地函数实现
【规则】包含在{}中代码块的结束处应加注释,便于阅读。
特别是多分支、多重嵌套的条件语句或循环语句。
此时注释可以用英文,方便查找对应的语句。
voidMain()
{
if(…)
…
while(…)
}/*endofwhile(…)*///指明该条while语句结束
}/*endofif(…)*///指明是哪条语句结束
}/*endofvoidmain()*///指明函数的结束
【规则】保证代码和注释的一致性。
修改代码同时修改相应的注释,不再有用的注释要删除。
【规则】注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开。
在使用缩写时或之前,应对缩写进行必要的说明。
如下书写比较结构清晰
/*获得子系统索引*/
iSubSysIndex=aData[iIndex].iSysIndex;
/*代码段1注释*/
[代码段1]
/*代码段2注释*/
[代码段2]
反例1:
如下例子注释与描述的代码相隔太远。
反例2:
如下例子注释不应放在所描述的代码下面。
反例3:
如下例子,显得代码与注释过于紧凑。
【规则】全局变量要有详细的注释,包括对其功能、取值范围、访问信息及访问时注意事项等的说明。
/*
*变量作用:
(错误状态码)
*变量范围:
例如0-SUCCESS1-Tableerror
*访问说明:
(访问的函数以及方法)
*/
BYTEg_ucTranErrorCode;
【规则】注释与所描述内容进行同样的缩排。
可使程序排版整齐,并方便注释的阅读与理解。
如下注释结构比较清晰
intDoSomething(void)
[代码段1]
/*代码段2注释*/
[代码段2]
}
反例:
如下例子,排版不整齐,阅读不方便;
}
【规则】对分支语句(条件分支、循环语句等)必须编写注释。
这些语句往往是程序实现某一特殊功能的关键,对于维护人员来说,良好的注释有助于更好的理解程序,有时甚至优于看设计文档。
〖建议〗通过对函数或过程、变量、结构等正确的命名以及合理地组织代码结构,使代码成为自注释的。
清晰准确的函数、变量命名,可增加代码的可读性,减少不必要的注释。
〖建议〗尽量避免在注释中使用缩写,特别是不常用缩写。
在使用缩写时,应对缩写进行必要的说明。
4.3基本格式
【规则】程序中一行的代码和注释不能超过80列。
包括空格在内不超过80列。
【规则】if、else、elseif、for、while、do等语句自占一行,执行语句不得紧跟其后。
不论执行语句有多少都要加{}。
这样可以防止书写失误,也易于阅读。
if(varible1<
varible2)
varible1=varible2;
下面的代码执行语句紧跟if的条件之后,而且没有加{},违反规则。
varible2)varible1=varible2;
【规则】定义指针类型的变量,*应放在变量前。
float*pfBuffer;
float*pfBuffer;
〖建议〗源程序中关系较为紧密的代码应尽可能相邻。
这样便于程序阅读和查找。
iLength=10;
iWidth=5;
//矩形的长与宽关系较密切,放在一起。
StrCaption=“Test”;
strCaption=“Test”;
4.4对齐
【规则】禁止使用TAB键,必须使用空格进行缩进。
缩进为4个空格。
消除不同编辑器对TAB处理的差异,有的代码编辑器可以设置用空格代替TAB键。
【规则】程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐。
{}之内的代码块使用缩进规则对齐。
这样使代码便于阅读,并且方便注释。
dowhile语句和结构的类型化时可以例外,while条件和结构名可与}在同一行。
voidFunction(intiVar)
{//独占一行并与引用语句左对齐。
while(condition)
DoSomething();
//与{}缩进4格
voidFunction(intiVar){
while(condition){
}}
【规则2-3-3】声明类的时候,public、protected、private关键字与分界符{}对齐,这些部分的内容要进行缩进。
classCCount
public:
//与{对齐
CCount(void);
//要进行缩进
~CCount(void);
intGetCount(void);
voidSetCount(intiCount);
private:
intm_iCount;
【规则2-3-4】结构型的数组、多维的数组如果在定义时初始化,按照数组的矩阵结构分行书写。
intaiNumbers[4][3]=
1,1,1,
2,4,8,
3,9,27,
4,16,64
【规则2-3-5】相关的赋值语句等号对齐。
tPDBRes.wHead=0;
tPDBRes.wTail=wMaxNumOfPDB-1;
tPDBRes.wFree=wMaxNumOfPDB;
tPDBRes.wAddress=wPDBAddr;
tPDBRes.wSize=wPDBSize;
〖建议2-3-1〗在switch语句中,每一个case分支和default要用{}括起来,{}中的内容需要缩进。
使程序可读性更好。
switch(iCode)
{
case1:
DoSomething();
//缩进4格
break;
case2:
{//每一个case分支和default要用{}括起来
DoOtherThing();
break;
}
…//其它case分支
default:
{
DoNothing();
}
4.5空行空格
【规则】不同逻辑程序块之间要使用空行分隔。
空行起着分隔程序段落的作用。
适当的空行可以使程序的布局更加清晰。
voidFoo:
:
Hey(void)
[Hey实现代码]
//空一行
Ack(void)
[Ack实现代码]
[Hey实现代码]
//两个函数的实现是两个逻辑程序块,应该用空行加以分隔。
【规则2-4-2】一元操作符如“!
”、“~”、“++”、“--”、“*”、“&
”(地址运算符)等前后不加空格。
“[]”、“.”、“->
”这类操作符前后不加空格。
!
bValue
~iValue
++iCount
*strSource
&
fSum
aiNumber[i]=5;
tBox.dWidth
tBox->
dWidth
【规则2-4-3】多元运算符和它们的操作数之间至少需要一个空格。
fValue=fOldValue;
fTotal+fValue
iNumber+=2;
【规则2-4-4】关键字之后要留空格。
if、for、while等关键字之后应留一个空格再跟左括号‘(’,以突出关键字。
【规则2-4-5】函数名之后不要留空格。
函数名后紧跟左括号‘(’,以
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CC 软件 编程 规范