1. 程式人生 > >Sonar 程式碼常見規則總結

Sonar 程式碼常見規則總結

最近接觸到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放前面
ifnull == object){
}

而不寫成

if(object == null){
}

這樣寫是從c++引入的一個習慣,因為在c++中少寫一個“=”會引起編譯報錯。在c++中如果寫成

if2
= null){ }

編譯時不會被發現,而寫成

ifnull = 2){
}

編譯時就會報錯。

  • == 和 equals
    “==”常用來比較基本資料型別,如果String 型別是 “=”號賦值而不是new的物件,也可以用 “==”來比較
    引用型別用 equals 比較,它比較的是引用的值。