[DOC]-检查
代码评审检查表-JAVA-其它制度表格
C++代码评审检查表
1 变量, 属性, 常数声明缺陷 (VC)
, 是否按照命名
声明变量和常数?
, 变量或属性是否存在引起混乱的类似名称Are there variables or
attributes with confusingly similar names? , 每一个变量和属性是否有正确的类型?
, 每一个变量和属性是否被恰当地初始化?
, 所有的for-循环控制变量是否在循环头部声明?
, Are there literal constants that should be named constants? 是否有literal
constants需要命名为constant,
, 是否存在应该是常数的便量或属性?
, 是否存在应该是局部变量的属性?
, 所有的属性是否有恰当访问modifiers (private, protected, public)?
, 是否存在应该是非静态或vice-versa的静态属性?
2 方法定义缺陷 (FD)
, 是否按照命名规范声明方法?
, 每一个方法的的参数值在使用前是否作过检查?
, 对于所有的方法: 在每一个返回点是否返回正确的值?
, 所有的方法是否有恰当访问modifiers 班(private, protected, public)?
, 是否存在应该是非静态或vice-versa的静态方法?
3 类定义缺陷 (CD)
, 每一个类是否都有正确的构造和析构函数?
, 在子类中是否有应该定义在超类中的公共成员?
, 类继承层次是否简单?
4 数据引用缺陷 (DR)
, 对于所有的数组引用: 每一个下标值是否在定义的边界值范围内? , 对于所有的对象或数组引用: 值是否确认是非-null?
5 计算/数字 Defects (CN)
, 是否存在使用混合类型数据的计算?
, 在一个计算中是否存在向上溢出(overflow)或向下溢出(underflow)?
, 对于使用一个以上操作符的表达式: 赋值和优先级是否正确? , 是否使用扩号以避免不明确的语句?
6 比较/Relational 缺陷 (CR)
, 每一个布尔型测试: 是否检查了正确的条件?
, 比较操作符是否正确?
, Has each boolean expression been simplified by driving negations
inward?
, 每一个布尔表达式是否正确?
, 比较是否会产生不恰当的,易忽略的副作用,
, 是否不注意地将一个"&" 换成了"&&"或者将一个"|"换成"||"?
7 控制流程缺陷 (CF)
,
, 对每一个循环:是否选择了最好的循环结构?
, 循环都有终止条件吗?
, 如果在一个循环中存在多个退出地方, 每一个退出是否必要并且被正
确处理?
, 每一个switch语句是否都有一个default条件?
, Switch语句中缺少break的语句正确吗,是否加上了注释, , 确定了的break语句是否将流程控制到了正确地方,
, 循环和分支的嵌套是否太深,并且嵌套是正确的吗? , 嵌套的if语句能否被转为switch语句,
, 空控制体的流程是否正确且被加以注释,
, 是否恰当地处理了所有的例外情况?
, 每一个方法是否都结束?
8 输入-输出缺陷 (IO)
, 所有的文件在被使用前是否打开了?
, 文件打开语句的属性是否与文件用法一致? , 所有的文件在被使用后是否关闭了?
, 打印或显示的文字是否有拼写或语法错误? , 是否合理地处理了所有的I/O例外情况?
9 模块接口缺陷 (MI)
, 每一个方法调用的参数,其数字、次序、类型和值是否和被调用方法
的声明一致?
, 单元中的值是不是合适的 (例如, inches versus yards)?
, 如果传递一个对象或数组给被调用方法,其值是否被被改变了,且是
正确的改变的?
10 注释缺陷 (CM)
, 每一个方法、类和文件是否都有恰当的注释? , 每一个属性、变量和常数声明是否都有一个注释? , 每一个方法和类的基本实现是否都用清晰的语言表达? , 每一个方法和类的头文件注释是否与实现 一致? , 代码和注释是否一致?
, 注释是否有助于理解代码?
, 代码中是否有足够的注释?
, 代码中的注释是否太多?
11 风格和包定义缺陷 (LP)
,
, 是否 一贯使用标准的缩进和layout格式?
, 对每一个方法: 是否不超过60 行?
, 对每一个编译模块: 是否不超过600 行?
12 模块化缺陷 (MO)
, 模块(方法和类)间存在低耦合吗,
, 模块(方法和类)间存在高内聚吗,
, 是否存在重复代码,这些代码可以通过调用提供相同功能的方法来替
换?
, Java类库是否在恰当的时间和地点被使用?
13 内存使用缺陷 (SU)
, 数组是否足够大?
, 对象或数组一旦不在使用是否被设成null?
14 性能缺陷 (PE)
, 能否使用更好的数据结构或更有效的算法?
, 逻辑的测试是否能如此安排——易成功,低消耗的测试优先于难成功,
高消耗的测试,
, 重计算一个值的开销是否可通过计算一次并存储结果来得到减小,
, 每一个计算过并存储了的数据是否得到了实际的使用,
, 计算是否可移出循环外,
, 在循环内部是否有没必要做的测试,
, 一个较短的循环能不能打开,即不用循环语句?
, 运行在相同数据上的两个循环是否可以合并为一个,