代码走查要点规范表
|
评审对象 |
|
作者 |
| |
|
评审人 |
|
评审工作量 |
| |
|
序号 |
检查项 |
评审意见 | ||
|
走查前准备 |
| |||
|
1 |
得到一份解释代码的最新的设计文档 |
| ||
|
2 |
代码都已提交 ,版本统一 |
| ||
|
程序结构组织 |
| |||
|
1 |
所有代码的结构清晰,具有良好的结构外观和整齐 |
| ||
|
2 |
所有的模块(函数和外部接口)定义清晰,模块分解清楚 |
| ||
|
3 |
所有的功能需求都明显的覆盖 |
| ||
|
4 |
结构设计能够满足机能变更 |
是“机能变更”还是“功能变更” | ||
|
5 |
整个代码体系结构组合合理 |
| ||
|
6 |
所有主要的数据构造描述清楚,合理 |
| ||
|
7 |
模块中所有的数据结构都定义为局部的,并且通过定义好的函数进行访问 |
| ||
|
8 |
所有的接口模块化,因此修改时不影响其他代码模块 |
| ||
|
9 |
代码体系构架对空间和速度都已经进行考虑 |
| ||
|
10 |
提供了处理数据的策略 |
| ||
|
11 |
数据库操作、IO操作等是否正确关闭资源。并且必须在try -catch-finally 的finally中关闭。 |
| ||
|
12 |
一个业务如果进行多次数据库更新、添加、删除是否正确添加事务。 |
| ||
|
13 |
进行逻辑与、逻辑或判断时是否使用短路与、短路或。 |
| ||
|
14 |
多处使用相同代码时,应定义唯一方法或变量以供使用。 |
| ||
|
15 |
对象是否使用工厂获取。 |
| ||
|
16 |
导入类时,如果仅使用包中的几个类,应导入具体类,而不是导入整个包。 |
| ||
|
17 |
数组声明的时候使用 int[] index ,而不要使用 int index[]。 |
| ||
|
18 |
检查代码和详细设计是否一致。 |
| ||
|
19 |
检查类中是否有无效的代码或者是无用的代码。 |
| ||
|
20 |
不要使用System.out.print()输出,需要进行日志处理 |
也不能使用System.err | ||
|
21 |
类的生成是否都有工厂模式而不是直接调用。 |
| ||
|
22 |
所有的文件名符合文件命名规范,见名知意 |
| ||
|
23 |
文件和模块分组清晰 |
| ||
|
24 |
所有的代码行在80字符以内 |
| ||
|
25 |
每个程序文件都小于2000行 |
| ||
|
代码组织 |
| |||
|
1 |
数据库查询语句不要出现select * |
| ||
|
2 |
对需要处理的字符串定义为StringBuffer ,常量定义成静态的。 |
| ||
|
3 |
所有的变量名都小于32字符 |
| ||
|
4 |
每行代码都小于80字符 |
| ||
|
5 |
类名、方法名、变量名的命名是否规范。 |
| ||
|
6 |
有返回值的方法是否正确返回。Return语句应定义在方法结尾处。 |
| ||
|
7 |
代码排版是否规范。 |
| ||
|
8 |
所有的行每行最多只有一句代码或一个表达式 |
| ||
|
9 |
复杂的表达式具备可读性 |
| ||
|
10 |
续行缩进 |
| ||
|
11 |
括号在合适的位置 |
| ||
|
12 |
每个顺序的小块用空行隔开 |
| ||
|
13 |
注释和代码对齐或接续在代码之后 |
| ||
|
14 |
JSP必须不能有basepath。 |
| ||
|
15 |
JSP引用js全部要有path |
| ||
|
16 |
JSP用的标签库是否都正确引用。 |
| ||
|
17 |
JSP写的js方法必须要有注释。 代码是否可读。 |
| ||
|
18 |
代码的逻辑是否有问题。 |
| ||
|
19 |
JSP页面尽量不要写过多的隐藏域。 |
| ||
|
20 |
JSP页面要注意排版、必要的注释、尽量减少使用alert(),JS 和CSS除非必要就放到外部的单独文件中,在JSP中引用。 |
| ||
|
21 |
类常量是否使用public static final修饰。 |
| ||
|
22 |
实例变量是否使用private修饰并定义getter、setter方法。 |
| ||
|
23 |
连接数据库的方法必须调用公用的方法。 |
| ||
|
24 |
异常要统一处理,异常处理方法是否符合项目组的约定 |
| ||
|
25 |
在Action中不要过多的逻辑处理代码 |
| ||
|
26 |
不要出现魔鬼数字 |
| ||
|
27 |
检查可能出现空指针异常的地方,例如一个对象可能为空,却调用它的方法或属性。 |
| ||
|
28 |
显示的文本无拼写和语法错误 |
| ||
|
29 |
代码与操作符的优先级无关 |
| ||
|
30 |
所有的表达式使用了正确的操作符 |
| ||
|
函数组织 |
| |||
|
1 |
所有的函数名都小于64个字符 |
| ||
|
2 |
代码中有相关注解 |
| ||
|
3 |
函数的名字清晰的定义了它的目标以及函数所做的事情 |
| ||
|
4 |
函数中所有的部分都合理的组成函数,相关独立的语句组组成函数 |
| ||
|
5 |
函数高内聚 只做一件事情,并做好 |
| ||
|
6 |
函数和其他代码松耦合 |
| ||
|
7 |
参数遵循一个明显的顺序; |
| ||
|
8 |
所有的参数都被使用 |
| ||
|
9 |
函数的参数接口关系清晰 |
| ||
|
10 |
如果一个函数有返回值,在所有的出口都有返回值 |
| ||
|
11 |
函数使用了最少数目的return语句 |
| ||
|
12 |
函数的参数个数小于7个 |
| ||
|
13 |
使用的算法说明清楚 |
| ||
|
14 |
函数检查了输入数据的合法性 |
| ||
|
15 |
函数异常处理清楚 |
| ||
|
16 |
函数设计已经考虑了将来的变化 |
| ||
|
17 |
调试信息存在于代码中并容易激活 |
| ||
|
18 |
代码检查调用函数的返回值,参数和调用匹配 |
| ||
|
19 |
函数确保了没有影响函数外代码 |
| ||
|
20 |
递归定义了出口 |
| ||
|
21 |
递归局限于一个函数 |
| ||
|
22 |
对接口的调用必须要有判断传入的参数不能为空和传入的参数正确。 |
| ||
|
数据类型与变量 |
| |||
|
1 |
数据类型存在数据类型解释 |
| ||
|
2 |
代码避免了重新定义预先定义的数据类型 |
| ||
|
3 |
静态变量明确区分 |
| ||
|
4 |
每一个变量都初始化了 |
| ||
|
5 |
命名和现实生活中的事务接近而不仅仅是一个程序类型 |
| ||
|
6 |
所有的变量都有最小的活动范围 |
| ||
|
7 |
所有的全局变量都描述清楚 |
| ||
|
8 |
所有的变量都用到了 |
| ||
|
条件判断 |
| |||
|
1 |
条件检查和结果在代码中清晰 |
| ||
|
2 |
If/else 使用正确 |
| ||
|
3 |
判断的次数降到最小 |
| ||
|
4 |
boolen表达式表示清楚 |
| ||
|
5 |
最常用的情况最先判断 ,所有的情况都考虑 |
| ||
|
6 |
判断体足够短,以使得一次可以看清楚 ,不要有臃肿的逻辑判断。 |
| ||
|
7 |
嵌套层次小于3次 |
| ||
|
8 |
判断条件使用引用时,应先判断其是否为null。 |
| ||
|
循环 |
| |||
|
1 |
17.不要出现三层以上的for循环。如有必要必须写清楚注释 |
| ||
|
2 |
循环体不为空,循环体能够一次看清楚 |
| ||
|
3 |
循环之前做好初始化代码 |
| ||
|
4 |
当有明确的多次循环操作,使用For循环 |
| ||
|
5 |
当有不明确的多次循环操作,while循环被使用 |
| ||
|
6 |
代码中不存在无穷次循环 |
| ||
|
7 |
循环的头部进行循环控制 |
| ||
|
8 |
循环体内的循环变量起到指示作用。 |
| ||
|
9 |
所有的循环边界是否正确; |
| ||
|
10 |
循环终止的条件清晰 |
| ||
|
11 |
循环条件、判断条件的边界值,数组、集合下标是否越界。 |
| ||
|
注释 |
| |||
|
1 |
类、方法、判断条件、循环、主要变量是否添加注释。 |
| ||
|
2 |
类名、方法名、变量名的命名是否规范。 |
| ||
|
3 |
有返回值的方法是否正确返回。Return语句应定义在方法结尾处。 |
| ||
|
4 |
| |||
|
5 |
解释不过于简单,解释说明代码功能,准确描述代码意义 |
| ||
|
6 |
注解清楚正确 ,注解为用户服务 |
| ||
|
7 |
所有的假设和限制进行注解 |
| ||
|
8 |
长的控制体结束,进行注解 |
| ||
|
9 |
类、方法、变量等注释是否符合规范,注释是否能够清晰明了 |
| ||
|
10 |
对if和for、while等要进行必要的注释,并且方法体都要用{ }包起来 |
| ||
|
11 |
代码的注释不能过于简单。要清晰明了,提交的时候必须写清楚修改的功能点和为什么要修改。 |
| ||
|
总括 |
| |||
|
1 |
代码直观 |
| ||
|
2 |
无用的代码、注解已经删除 |
| ||
|
3 |
除非必要,不要再循环体内定义对象。 |
| ||
|
4 |
代码是否与详细设计一致。 |
| ||
|
其他注意项 |
| |||
|
1 |
尽量减少同名的类(如java.sql.Date,java.util.Date) |
| ||
|
2 |
不要在循环中反复定义创建变量 for(){String str= (new String)v.next();} |
| ||
|
3 |
不要在循环中使用复杂的计算 for(int i=0;i<en.size()i++){} |
| ||
|
4 |
可能重复执行的SQl语句尽量使用preparedStatment |
| ||
|
5 |
浮点型要精确比较时不要使用==,而如下进行 Math.abs(x-0.0)<Double.MIN.value*2 |
| ||
|
6 |
在sql中注意敏感的单词要回避使用 DB2 中id flag year month name state Oracle 中number Sybase中 count |
| ||
|
7 |
代码与操作系统无关,不需要任何假设条件 |
| ||
|
特殊 |
| |||
|
1 |
所有的数组访问在它们的边界内 |
| ||
|
2 |
所有常量定义和使用替代代码中的数字 |
表述模糊 | ||
|
3 |
类型转换明确指明 |
| ||
本文详细介绍了代码走查的要点和规范,包括检查代码的正确性、可读性、效率和维护性等方面,旨在提升软件质量并遵循最佳实践。
1548

被折叠的 条评论
为什么被折叠?



