重构心得

这一段时间做了些代码重构的工作,代码检查工具是在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、编码风格

Java代码重构心得

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

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

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

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

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

posted @ 2020-09-07 19:05  春意了无痕  阅读(137)  评论(0)    收藏  举报