Java测试规范


(by Huihoo.com Allen)

1、未使用(死)代码

。存在未使用的私有静态字段

。带有不必要的修饰符的借口

。目前没有使用的私有字段

。未使用的变量

。无需的参数

。显示导入的java.lang包

。目前没有使用的私有方法

2、编码标准

。一行语句中声明了多种类型的变量

。物理位置不在一起的同名小组成员 。

。从一个抽象类库中的构造器调用的抽象方法

。包括大量case语句的switch语句

。除了第一个之外的main()函数

。直接弹出的Exception类库

。catch语句中Exception或者RuntimeException

。直接弹出的Error

。没有在接口中定义的常量

。长整数应该使用‘L’代替小写字母‘l’

3、初始化

。没有显式初始化的静态字段

。没有显式初始化每个数据成员的构造器

。编译代码中可能的漏洞

。存在错误的case的switch语句

。程序体为空的for语句

。程序体为空的if语句

。需要重载的方法

。应该使用等号代替==

。程序体为空的else语句

。强制转换为较低精度的主要数据类型

。在switch子句中的文本标识

。if条件中的变量赋值

。缺少default子句中的switch语句

。存在嵌套赋值

。比较浮点数

。循环控制变量在循环内部被突然改变

。方法参数名称和类成员名称冲突

。可能与字符串串联混淆的+操作符

4、面向对象编程

。继承的静态成员函数被隐藏

。可能嵌套过深的类库

。继承的实例变量被隐藏

。被重载private方法

。内部的类库不可见或外部的类库不相关

。某个实列变量为public或在package中

。没有在一开始列出的public或package方法和数据

。不是abstract或实现比较通常的接口

。命名惯例

。一个类名称不符合标准

。一个接口名称不符合标准

。一个列外名称不符合标准

。一种方法名称不符合标准

。一个静态字段名称不符合标准

。一个静态方法名称不符合标准

。一种方法参数名称不符合标准

。一个实列字段不符合标准

。一个本地变量名称不符合标准

。一个最终静态字段中包含小写字母

。一个返回布尔值的方法使用"is"或者"has"前缀

。一个接口成员字段包含小写字母

。使用一个非惯例的变量名称

5、优化

。一个finally模块中存在未关闭的流

。使用一个for循环代替System.arrarycopy()拷贝数组

。存在没有必要的instanceof

。存在没有必要的强制变量类型转换

。可以使用一个缩写的赋值语句

。常量字符串使用StringBuffer代替String

。循环条件过于复杂

。取反操作符使用过于频繁

6、回收

。finalize()没有调用super.finally()

。最终方法的最后模块没有调用super.finalize()

。finalize()被显示调用

。在将主要类型转换成String时,使用了不必要的临时变量

。在应该使用long[]的位置使用了Date[]

7、javadoc注释

。误用了Javadoc标签

。Javadoc和普通注释之间区分不明显

8、线程

。使用synchronized,降低了性能

9、全局静态分析

。过度访问package-private字段

。过度访问package-private方法

。过度访问package-private类库

。过度访问public/protected字段

。过度访问public/protected方法

。过度访问public/protected类库

。没有使用全局package-private字段

。没有使用全局package-private方法

。没有使用全局package-private类库

。没有使用全局public/protected字段

。没有使用全局public/protected方法

。没有使用全局public/protected类库

10、企业版java beans(EJB)

。bean类库没有定义成为public

。bean类库被错误定义成为abstract

。bean类库被错误定义成为final

。bean类库实现一个ejbCreate()方法

。bean类库错误定义finalize方法

。ejbCreate()访问控制符没有定义成为public

。SessionBean中的ejbCreate()没有返回void

。定位方法的修饰符没有定义成为public

。定位方法的返回类型不是一个主键,也不是主键的类集

。ejbPostCreate()有一个非public的访问控制修饰符

。ejbPostCreate()没有返回类型void

11、杂项

。成员字段隐藏在成员方法中

。循环记数器无法递增

。for循环中没有包含布尔条件

。存在的clone()方法没有调用super.clone()

。for语句缺少代码模块

。方法参数得到赋值