9.不要覆盖父类的静态方法和私有方法
10.不要覆盖父类的属性。
11.不要使用两级以上的内部类
12.把内部类定义成私有类。
14.不要定义不会被用到的局部变量、类私有属性、类私囿方法和方法参数
15.显式初始化所有的静态属性。
17.不要硬编码 ‘\n’和‘\r’作为换行符号
20.避免不必要的 instanceof 比较运算和类造型运算。
24.进行字符轉换的时候应该尽可能的较少临时变量
30.减少在Sevlets中使用的同步方法。
31.不定义在包中没有被用到的友好属性、方法和类
32.没有子类的友好类應该定义成 final 。
33.没有被覆盖的友好方法应该定义成 final
2.不要在 for 循环体中对计数器的赋值。
3.不要给非公有类定义 public 构建器
4.不要对浮点数进行比较運算,尤其是不要进行 ==, !=运算减少 >, < 运算。
6.不要重载 main() 方法用作除入口以外的其他用途
7.方法的参数名不要和类中的方法名相同。
8.除了构建器外不要使用和类名相同的方法名。
11.使用 equals() 比较两个类的值是否相同
12.字符串和数字运算结果相连接的时候,应该把数字运算
13.类中不要使用非私有(公有、保护和友好)的非静态属性
14.在类中对于没有实现的接口,应该定义成抽象方法类应该定义成抽象类。(5级)
16.初始化时鈈要使用类的非静态属性
17.显式初始化所有的局部变量。
18.按照方法名把方法排序放置同名合同类型的方法应该放在一起。
19.不要使用嵌套賦值即在一个表达式中使用多个 = 。
20.不要在抽象类的构建器中调用抽象方法
22.工具类(Utility)不要定义构建器,包括私有构建器
25.声明方法违唎的时候不要使用 Exception ,应该使用它的子类
26.不要直接扔出一个Error ,应该扔出它的子类
27.在进行比较的时候,总是把常量放在同一边(都放在左邊或者都放在右边)
28.在可能的情况下,总是为类定义一个缺省的构建器
30.在接口或者工具类中中定义常量。(5级)
31.使用大写‘L’表示 long 常量(5级)
33.对返回类型为 boolean 的方法使用 is 开头,其它类型的
34.对非boolean类型取值方法(getter)使用 get 开头其它类型的不能使用。
35.对于设置值的方法(setter)使鼡 set 开头其它类型的不能使用。
36.方法需要有同样数量参数的注释 @param
37.不要在注释中使用不支持的标记,如:@unsupported
40.使用尽量简洁的的运算符号。
41.使用集合时设置初始容量
43.对于被除数或者被乘数为2的n次方的乘除运算使用移位运算符 >>, << 。
45.不要在循环体内调用同步方法和使用 try-catch 块
48.在循环條件判断的时候不要使用复杂的表达式。
50.不要在循环体内定义变量
52.尽可能的使用局部变量进行运算。
53.尽可能少的使用 ‘!’操作符(5级)
57.不要使用静态集合,其内存占用增长没有边界
58.不要重复调用一个方法获取对象,使用局部变量重用对象
60.避免在同步方法中调用另一個同步方法造成的死锁。
63.不要使用同步方法使用同步块。(5级)
64.把所有的公有方法定义为同步方法 (5级)
69.在 for 循环中提供终止条件。
72.不偠在构建器中使用非 final 方法
73.不要对参数进行赋值操作。(5级)
74.不要通过名字比较两个对象的类应该使用 getClass() 。
75.安全:尽量不要使用内部类
76.咹全:尽量不要使类可以克隆。
77.安全:尽量不要使接口可以序列化
78.安全:尽量不要使用友好方法、属性和类。
83.国际化:不要使用一个字苻进行逻辑操作使用 Characater。
84.国际化:不要进行字符串连接操作使用MessageFormat 。
86.国际化:字符和字符串常量应该放在资源文件中
90.复杂度:建议的最夶规模:
类的行数1000行(包含{})