4.3代码复查
编码标准。编码标准是被广泛接受的、能够作为工作样板的编码实践集。良好的编码标准将有效地帮助您避免开发有潜在危险的代码,有助于预防缺陷。例如,可以在编码标准中列出那些应该避免使用的方法,规定号循环入口或在说明是初始化变量,避免不良的变量命名等。编码标准还能有效地统一和规范整体开发活动。当其他开发人员加入到项目中来时,他们能够很好地适应这一切。代码也将变得更规范更易维护。
表4.5 C++编码标准
目标
指导C++程序的开发
程序头
程序头格式
所有程序都应从一个描述性的开头开始
/********************************************************************/
/*Program Assignment:程序号 */
/*Name: 你的姓名 */
/*Date: 程序开发开始日期 */
/*Description: 对程序功能的一个简单描述 */
/********************************************************************/
清单内容
内容距离
一份清单内容的概要
/********************************************************************/
/*Listing Contents (清单内容): */
/* Reuse Instruction (重用指导) */
/* Includes (包括) */
/* Class Declararions (类说明) */
/* CData */
/* Aset */
/* Source Code in C (用C编写的源代码): \classes\Cdata.cpp: */
/* Cdata */
/* Cdata() */
/* Empty() */
/********************************************************************/
重用指导
示例
描述如何使用该程序。提供说明格式、参数值和类型以及参数范围;
提供对非法值、溢出条件或其他潜在的有可能引起非正常操作的条件等方面的警告。
/********************************************************************/
/*Reuse Instruction (重用指导) */
/* Int Printline(char *line_of_character) */
/* 目的:画线,’line_of_character’,位于同一打印行 */
/* 限制:线长最多为LINE_LENGTH */
/* Return:0 if 打印机未准备好 */
/* else 1 */
/********************************************************************/
标识符
标识符示例
所有变量、函数名、常数以及其它标识符都是用带有描述性的名称。避免缩写形式或仅有一个字母的变量名。
int number_of_students /*此标识符好*/
int x4,j,ftave /*此标识符不好*/
注释
好的注释
不好的注释
程序主体
示例
编码、文档要充分,以帮助读者理解其功能;
注释及应说明编码的目的,也应说明编码的行为;
对变量声明进行注释,指出说明该变量的目的。
If (record_count>limit) /*是否所有的记录都处理了*/
If (record_count>limit) /*检查record_count是否超过限制*/
程序主体前应有一段注释来描述由以下部分所作的处理。
/********************************************************************/
/*以下程序部分将检察署驻“grades”的内容,并将计算班级成绩的平均值。 */
/********************************************************************/
空白区域
为了增加程序的可读性,写程序时应留出一定的空间;
每个程序结构之间至少有一空行将它们隔开。
缩进
缩进示例
不同级别的括号之间应该有缩进;
每一个起始括号和终止括号应单独占一行。
While (miss_distance > threshold)
{
success_code=move_robot(target_location);
if (success_code==MOVE_FAILED)
{
pringf(“The robot move has failed.\n”)
}
}
大写
大写示例
所有定义应大写;
所有其它标识符及保留值均应小写;
对用户的输出信息可以大、小写相混合,以便用户清晰明了。
#define DEFAULT_NUMBER_OF_STUDENTS 15
int class_size=DEFAULT_NUMBER_OF_STUDENTS;
其他种类的代码复查。在软件组织中,一种常用的方法是同行评审,就是几个工程师彼此复查程序。组织良好的同行评审一般会发现程序中50%~70%的缺陷。互查虽然需要很多时间,但是可以有效发现缺陷,因为工程师往往难于发现自己的设计错误。他们创作这个设计,直到程序应该完整什么,即使概念有瑕疵、作了错误的设计或实现假定,他们往往很难发现。检查这可以帮助他们克服这些问题。对一个大的项目,最佳检查策略是,先做个人代码复查再进行编译,然后在任何测试前进时行同行检查。
细心工作是有回报的。当工程师觉得对自己开发的程序附有质量责任时,他就不会依赖于编译器或其他工具来发现缺陷。全面的代码复查要花费时间,但是他们节省出来的时间比花费的时间多得多,并能够生产出更好的产品。