代码重构心得

这一段时间做了些代码重构的工作,代码检查工具是在sonar,它集成了CheckStyle,PMD,Findbugs的代码校验规则,现把最近的工作总结如下:

1、抛出捕获异常

1.1 不要抛出原始异常,如:throw RuntimeException()

1.2 不要声明冗余的异常,在方法中声明的时候用throws,方法体中并不会出现的异常不要声明

1.3 不要仅仅重新抛出异常,不做任何处理直接throw e,没有意义,徒增代码量和复杂度

1.4 能在代码判断出的问题,就不要用catch,提高性能,如:不要catch NullPointerException

1.5 尽量不要catch Exception,捕获异常一定要准确

1.6 catch捕获异常后立即抛出,抛出的new Exception需要带上捕获到的exception,即已old                        exception为参数来实例化new exception,不然,会丢失stack trace

2、类、方法、成员变量注意事项

2.1 修饰符顺序 The correct order is :

   public, protected, private, abstract, static, final, transient, volatile,                  synchronized, native, strictfp.

2.2 成员变量,除了 static final可以是public,别的都必须是private,提供get set方法

2.3 对于final修饰的成员变量,直接再加上static修饰,提高性能,且变量名全用大写字母

2.4 不使用重复的字符串,当一个字符串重复使用时,抽取成一个常量,extract constant

2.5 不在instance方法中修改static属性,写一个static的方法来修改static变量,在instance方法              中调用

2.6 return的时候,没必要创建变量,

   如:int i = 1; return i;

   改成 return 1;

   return布尔值的时候,尽量简化

   如: if(){return true;}else{return false}

   改成:if(){return true;}return false

2.7 方法体中不允许修改方法的参数,如果确实需要修改,再声明一个变量

2.8 JavaBean中有变量是Timestamp的时候,get set方法需要做处理,不能直接试用ts,而是new             Timestamp(ts.getTime())

2.9 不在构造方法中调用Thread.start()起多线程,另写一个方法,初始化对象后调用;

   写一个组件的时候,写init的同时记得写destroy,销毁属性对象和线程

2.10 尽量不使用匿名内部类

2.11 单例模式,只有一个private的构造方法,建议声明成final类

3、Connection Statement ResultSet等对象一定要在finally中关闭,且在finally中需要try catch

4、HashMap的遍历,试用map.entrySet(),不使用map.keySet()

5、编码风格

5.1 if else语句必须使用大括号

5.2 静态常量必须是全大写字母

5.3 普通变量必须以小写字母开头,只能由大小写字母和数字组成

5.4 方法名必须以小写字母开头,只能由大小写字母和数字组成

5.5 代码中未使用的引用import,删掉

你可能感兴趣的:(代码重构,优化Java代码)