最近接触到SonarQube,它能实现代码的扫描及结合其他插件扫描代码的单元测试覆盖率,在测试早期就能发现一些基本的问题,甚至能发现功能测试不能发现的问题,极大的提高了代码的测试效率。更多的Sonar Rule 参考下面这篇博文:
http://www.voidcn.com/article/p-czczizzu-bnv.html
自己平常也会写一些Java代码,也会遇到Rule中常见的问题,现在总结一下,后续会接着补充:
字符串拼接不要使用 +
如 string1 + string2 的形式,这样相当于每次赋值都会new一个对象,效率非常低,可以使用StringBuilder 或者 StringBuffer,StringBuffer 是线程安全的,有很多同步的方法,效率不如StringBuilder。不要使用BigDecimal(double)
因为浮点的不精确,可能使用BigDecimal(double)得不到期望的值,使用 BigDecimal.valueOf 代替,如:
double d = 1.1
BigDecimal bd1 = BigDecimal.valueOf(d);
- if 语句中null与一个object比较的时候,null放前面
if(null == object){
}
而不写成
if(object == null){
}
这样写是从c++引入的一个习惯,因为在c++中少写一个“=”会引起编译报错。在c++中如果写成
if(2 = null){
}
编译时不会被发现,而写成
if(null = 2){
}
编译时就会报错。
- == 和 equals
“==”常用来比较基本数据类型,如果String 类型是 “=”号赋值而不是new的对象,也可以用 “==”来比较
引用类型用 equals 比较,它比较的是引用的值。