代码走查检查表
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4
整个代码体系结构组合合理,分层清晰,代码之间功能划分明确
5
所有的接口模块化,尽量减少接口之间的耦合度,修改时尽量不影响其他代码模块
6
代码体系构架对空间和速度都已经进行考虑
7
数据库操作、IO操作等是否正确关闭资源。并且必须在try -catch-finally 的finally中关闭。
8
一个业务如果进行多次数据库更新、添加、删除是否正确添加事务。
代码走查检查表
评审日期:年 月 日
评审对象
作者
评审人
评审工作量
序号
检查项
评审意见
走查前准备
1
得到一份解释代码的最新的设计文档,作为代码走查的参考
2
代码都已提交 ,版本统一
程序结构组织
1
所有代码的结构清晰,具有良好的结构外观和整齐
2
所有的模块(函数和外部接口)定义清晰,模块分解清楚
3
所有的功能需求都明显的覆盖
1
类、方法、判断条件、循环、主要变量是否添加注释。
2
类名、方法名、变量名的命名是否规范。
3
有返回值的方法是否正确返回。Return语句应定义在方法结尾处。
4
源代码能够自我解释,每个人看到代码就能很快理解
5
解释不过于简单,解释说明代码功能,准确描述代码意义6所有的假Fra bibliotek和限制进行注解
7
长的控制体结束,进行注解
新增
all
孟洋涛、郑海焘
郑博
1.1
2012-5-28
根据各项目组评审出问题进行修改
all
孟洋涛
郑博
14
递归局限于一个函数
15
对接口的调用必须要有判断传入的参数不能为空和传入的参数正确。
数据类型与变量
1
数据类型存在数据类型解释
2
代码避免了重新定义预先定义的数据类型
3
每一个变量都初始化了
4
所有的变量都有最小的活动范围
5
所有的全局变量都描述清楚,如全局变量的作用
6
所有的变量都用到了
条件判断
1
If/else 使用正确
3
函数和其他代码松耦合
4
所有的参数都被使用
5
如果一个函数有返回值,在所有的出口都有返回值
6
函数使用了最少数目的return语句
7
函数的参数个数小于7个
8
使用的算法说明清楚
9
函数检查了输入数据的合法性
10
函数异常处理清楚
11
函数设计尽量考虑将来的变化
12
调试信息存在于代码中并容易激活
13
递归定义了出口
DB2 中id flag year month name state
Oracle 中number
Sybase中 count
6
代码与操作系统无关,不需要任何假设条件
7
所有的数组访问在它们的边界内
8
类型转换明确指明
文件修订记录
变更版本
修订日期
原因与修改情况描述
位置(页/段落/章节号
修订人
审核人
1.0
2012-5-22
20
每个程序文件都小于2000行
代码组织
1
数据库查询语句不要出现select *
2
对需要处理的字符串定义为StringBuffer ,常量定义成静态的。
3
所有的变量名都小于32字符
4
有返回值的方法是否正确返回。Return语句应定义在方法结尾处。
5
代码排版是否规范。
6
所有的行每行最多只有一句代码或一个表达式
2
判断的次数降到最小
3
Boolean表达式表示清楚
4
最常用的情况最先判断,所有的情况都考虑
5
判断体足够短,以使得一次可以看清楚,不要有臃肿的逻辑判断。
6
嵌套层次小于3次
7
判断条件使用引用时,应先判断其是否为null。
循环
1
不要出现三层以上的for循环。如有必要必须写清楚注释
2
循环体不为空,循环体能够一次看清楚
16
代码的逻辑是否有问题。
17
JSP页面尽量不要写过多的隐藏域。
18
JSP页面要注意排版、必要的注释、尽量减少使用alert(),JS
和CSS除非必要就放到外部的单独文件中,在JSP中引用。
19
实例变量是否使用private修饰并定义getter、setter方法。
20
连接数据库的方法必须调用公用的方法。
2
不要在循环中反复定义创建变量
for(){String str= (new String)v.next();}
3
可能重复执行的SQl语句尽量使用preparedStatment
4
浮点型要精确比较时不要使用==,而如下进行
Math.abs(x-0.0)<Double.MIN.value*2
5
在sql中注意敏感的单词要回避使用
21
异常要统一处理,异常处理方法是否符合项目组的约定
22
在Action中不要过多的逻辑处理代码
23
不要出现魔鬼数字
24
检查可能出现空指针异常的地方,例如一个对象可能为空,却调用它的方法或属性。
25
显示的文本无拼写和语法错误
26
所有的表达式使用了正确的操作符
函数组织
1
所有的函数名都小于64个字符
2
函数高内聚 尽量只做一件事情,并做好
7
复杂的表达式具备可读性,添加注释说明,表达式结构清晰
8
续行缩进
9
括号在合适的位置
10
每个顺序的小块用空行隔开
11
注释和代码对齐或接续在代码之后
12
JSP必须不能有basepath。
13
JSP引用js全部要有path
14
JSP用的标签库是否都正确引用。
15
JSP写的js方法必须要有注释。
代码是否可读。
3
循环之前做好初始化代码
4
当有明确的多次循环操作,使用For循环
5
当有不明确的多次循环操作,while循环被使用
6
代码中不存在无穷次循环
7
循环的头部进行循环控制
8
循环体内的循环变量起到指示作用。
9
所有的循环边界是否正确;
10
循环终止的条件清晰
11
循环条件、判断条件的边界值,数组、集合下标是否越界。
注释
8
对if和for、while等要进行必要的注释,并且方法体都要用{ }包起来
9
代码的注释不能过于简单,要清晰明了。
10
缺陷修改阶段,提交代码的时候必须写清楚修改的功能点和为什么要修改。
总括
1
无用的代码、注解已经删除
2
除非必要,不要在循环体内定义对象。
“
其他注意项
1
尽量减少同名的类(如java.sql.Date,java.util.Date)
15
检查类中是否有无效的代码或者是无用的代码。
16
不要使用System.out.print()以及System.err输出,需要进行日志处理
17
所有的文件名符合文件命名规范,见名知意
18
文件和模块分组清晰
19
较长的语句、表达式或参数(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读
9
进行逻辑与、逻辑或判断时是否使用短路与、短路或。
10
多处使用相同代码时,应定义唯一方法或变量以供使用。
11
对象是否使用工厂获取。
12
导入类时,如果仅使用包中的几个类,应导入具体类,而不是导入整个包。
13
数组声明的时候使用 int[] index ,而不要使用 int index[]。
14
代码实现的逻辑是否与详细设计描述的逻辑一致
整个代码体系结构组合合理,分层清晰,代码之间功能划分明确
5
所有的接口模块化,尽量减少接口之间的耦合度,修改时尽量不影响其他代码模块
6
代码体系构架对空间和速度都已经进行考虑
7
数据库操作、IO操作等是否正确关闭资源。并且必须在try -catch-finally 的finally中关闭。
8
一个业务如果进行多次数据库更新、添加、删除是否正确添加事务。
代码走查检查表
评审日期:年 月 日
评审对象
作者
评审人
评审工作量
序号
检查项
评审意见
走查前准备
1
得到一份解释代码的最新的设计文档,作为代码走查的参考
2
代码都已提交 ,版本统一
程序结构组织
1
所有代码的结构清晰,具有良好的结构外观和整齐
2
所有的模块(函数和外部接口)定义清晰,模块分解清楚
3
所有的功能需求都明显的覆盖
1
类、方法、判断条件、循环、主要变量是否添加注释。
2
类名、方法名、变量名的命名是否规范。
3
有返回值的方法是否正确返回。Return语句应定义在方法结尾处。
4
源代码能够自我解释,每个人看到代码就能很快理解
5
解释不过于简单,解释说明代码功能,准确描述代码意义6所有的假Fra bibliotek和限制进行注解
7
长的控制体结束,进行注解
新增
all
孟洋涛、郑海焘
郑博
1.1
2012-5-28
根据各项目组评审出问题进行修改
all
孟洋涛
郑博
14
递归局限于一个函数
15
对接口的调用必须要有判断传入的参数不能为空和传入的参数正确。
数据类型与变量
1
数据类型存在数据类型解释
2
代码避免了重新定义预先定义的数据类型
3
每一个变量都初始化了
4
所有的变量都有最小的活动范围
5
所有的全局变量都描述清楚,如全局变量的作用
6
所有的变量都用到了
条件判断
1
If/else 使用正确
3
函数和其他代码松耦合
4
所有的参数都被使用
5
如果一个函数有返回值,在所有的出口都有返回值
6
函数使用了最少数目的return语句
7
函数的参数个数小于7个
8
使用的算法说明清楚
9
函数检查了输入数据的合法性
10
函数异常处理清楚
11
函数设计尽量考虑将来的变化
12
调试信息存在于代码中并容易激活
13
递归定义了出口
DB2 中id flag year month name state
Oracle 中number
Sybase中 count
6
代码与操作系统无关,不需要任何假设条件
7
所有的数组访问在它们的边界内
8
类型转换明确指明
文件修订记录
变更版本
修订日期
原因与修改情况描述
位置(页/段落/章节号
修订人
审核人
1.0
2012-5-22
20
每个程序文件都小于2000行
代码组织
1
数据库查询语句不要出现select *
2
对需要处理的字符串定义为StringBuffer ,常量定义成静态的。
3
所有的变量名都小于32字符
4
有返回值的方法是否正确返回。Return语句应定义在方法结尾处。
5
代码排版是否规范。
6
所有的行每行最多只有一句代码或一个表达式
2
判断的次数降到最小
3
Boolean表达式表示清楚
4
最常用的情况最先判断,所有的情况都考虑
5
判断体足够短,以使得一次可以看清楚,不要有臃肿的逻辑判断。
6
嵌套层次小于3次
7
判断条件使用引用时,应先判断其是否为null。
循环
1
不要出现三层以上的for循环。如有必要必须写清楚注释
2
循环体不为空,循环体能够一次看清楚
16
代码的逻辑是否有问题。
17
JSP页面尽量不要写过多的隐藏域。
18
JSP页面要注意排版、必要的注释、尽量减少使用alert(),JS
和CSS除非必要就放到外部的单独文件中,在JSP中引用。
19
实例变量是否使用private修饰并定义getter、setter方法。
20
连接数据库的方法必须调用公用的方法。
2
不要在循环中反复定义创建变量
for(){String str= (new String)v.next();}
3
可能重复执行的SQl语句尽量使用preparedStatment
4
浮点型要精确比较时不要使用==,而如下进行
Math.abs(x-0.0)<Double.MIN.value*2
5
在sql中注意敏感的单词要回避使用
21
异常要统一处理,异常处理方法是否符合项目组的约定
22
在Action中不要过多的逻辑处理代码
23
不要出现魔鬼数字
24
检查可能出现空指针异常的地方,例如一个对象可能为空,却调用它的方法或属性。
25
显示的文本无拼写和语法错误
26
所有的表达式使用了正确的操作符
函数组织
1
所有的函数名都小于64个字符
2
函数高内聚 尽量只做一件事情,并做好
7
复杂的表达式具备可读性,添加注释说明,表达式结构清晰
8
续行缩进
9
括号在合适的位置
10
每个顺序的小块用空行隔开
11
注释和代码对齐或接续在代码之后
12
JSP必须不能有basepath。
13
JSP引用js全部要有path
14
JSP用的标签库是否都正确引用。
15
JSP写的js方法必须要有注释。
代码是否可读。
3
循环之前做好初始化代码
4
当有明确的多次循环操作,使用For循环
5
当有不明确的多次循环操作,while循环被使用
6
代码中不存在无穷次循环
7
循环的头部进行循环控制
8
循环体内的循环变量起到指示作用。
9
所有的循环边界是否正确;
10
循环终止的条件清晰
11
循环条件、判断条件的边界值,数组、集合下标是否越界。
注释
8
对if和for、while等要进行必要的注释,并且方法体都要用{ }包起来
9
代码的注释不能过于简单,要清晰明了。
10
缺陷修改阶段,提交代码的时候必须写清楚修改的功能点和为什么要修改。
总括
1
无用的代码、注解已经删除
2
除非必要,不要在循环体内定义对象。
“
其他注意项
1
尽量减少同名的类(如java.sql.Date,java.util.Date)
15
检查类中是否有无效的代码或者是无用的代码。
16
不要使用System.out.print()以及System.err输出,需要进行日志处理
17
所有的文件名符合文件命名规范,见名知意
18
文件和模块分组清晰
19
较长的语句、表达式或参数(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读
9
进行逻辑与、逻辑或判断时是否使用短路与、短路或。
10
多处使用相同代码时,应定义唯一方法或变量以供使用。
11
对象是否使用工厂获取。
12
导入类时,如果仅使用包中的几个类,应导入具体类,而不是导入整个包。
13
数组声明的时候使用 int[] index ,而不要使用 int index[]。
14
代码实现的逻辑是否与详细设计描述的逻辑一致