1. System.out.println 用 logger.info替代, 自己写的main方法除外
2. e.printstacktrace() 用 logger.error替代
3. list.size>0 或者 list.size!=0 用 CollectionUtil.isNotEmpty 替代
4. List> list=new ArrayList> 用 List> list=new ArrayList() 替代, 自动推导
5 .StringBuffer 用 StringBuilder 替代, 真正项目中 用到 StringBuffer 的场景真的很少
6. 常量类 必须添加 private的构造方法 且 必须放在 所有定义的常量下面
7. 抽取 公共的方法 ,避免过多的 冗余代码
8. 出现频率高的魔法数字用常量替代
9. 用String.valueof 替换 Object+"" ,效率更高
10. 常量类 可以 考虑用接口 代替
11. 如果service层 很多方法都需要传的参数, 可以考虑 ThreadLocal
12. 缓存如果在业务方面 放在 service层做不到 ,可以考虑 缓存 dao层
13. 移除不需要使用的方法参数
14. Catch Exception instead of Throwable , catch 异常不要 是 Throwable
15. 数组不要加上 final修饰
16. Return an empty collection instead of null
17. 字符串的非空判断替换为 StringUtils.isNotBlank
18. if (code.equals("1")) { 替换为 if ("1".equals(code)) { 避免空指针异常
19. 类的构造 符合
Class and instance variables
Constructors
Methods
20. Move the array designator from the variable to the type
21. 变量修饰符的先后顺序是 :
The Java Language Specification recommends listing modifiers in the following order:
1. Annotations
2. public
3. protected
4. private
5. abstract
6. static
7. final
8. transient
9. volatile
10. synchronized
11. native
12. strictfp
22 . An indexOf or lastIndexOf call with a single letter String can be made more performant by switching to a call with a char argument
sonar 提示 : Put single-quotes around '/' to use the faster "lastIndexOf(char)" method
23. 静态常量命名为大写,并以 下划线分割
代码优化越来越重视了,很多公司都搭建了 sonarquebe 检测代码, 如果出了 报告 ,影响绩效的
贴上 StringUtils 类的常用方法: