1. 程式人生 > >代碼走查案例2

代碼走查案例2

分隔符 base 邏輯 rate def 問題 線程資源 自己的 表達

使用阿裏代碼規約IDEA插件掃描了工程代碼,發現了需要優化的地方,希望大家可以在開發自己的項目時避免此類問題。

【Blocker】

  1. long或者Long初始賦值時,必須使用大寫的L,不能是小寫的l,小寫容易跟數字1混淆,造成誤解。
  2. 在if/else/for/while/do語句中必須使用大括號,即使只有一行代碼,避免使用下面的形式:if (condition) statements;
  3. 在使用正則表達式時,利用好其預編譯功能,可以有效加快正則匹配速度。
  4. 所有的包裝類對象之間值的比較,全部使用equals方法比較。
  5. 所有的覆寫方法,必須加@Override註解。
  6. 線程池不允許使用Executors去創建,而是通過ThreadPoolExecutor的方式,這樣的處理方式讓寫的同學更加明確線程池的運行規則,規避資源耗盡的風險。
  7. 獲取當前毫秒數:System.currentTimeMillis(); 而不是new Date().getTime();
  8. 避免通過一個類的對象引用訪問此類的靜態變量或靜態方法,無謂增加編譯器解析成本,直接用類名來訪問即可。

【Critical】

  1. Object的equals方法容易拋空指針異常,應使用常量或確定有值的對象來調用equals。
  2. SimpleDateFormat 是線程不安全的類,一般不要定義為static變量,如果定義為static,必須加鎖,或者使用DateUtils工具類。
  3. 不能使用過時的類或方法。
  4. 不能在finally塊中使用return,finally塊中的return返回後方法結束執行,不會再執行try塊中的return語句。
  5. 在一個switch塊內,每個case要麽通過break/return等來終止,要麽註釋說明程序將繼續執行到哪一個case為止;在一個switch塊內,都必須包含一個default語句並且放在最後,即使它什麽代碼也沒有。
  6. 常量命名應該全部大寫,單詞間用下劃線隔開,力求語義表達完整清楚,不要嫌名字長。
  7. 所有的枚舉類型字段必須要有註釋,說明每個數據項的用途。
  8. 抽象類命名使用Abstract或Base開頭。
  9. 方法名、參數名、成員變量、局部變量都統一使用lowerCamelCase,必須遵從駝峰形式。
  10. 線程資源必須通過線程池提供,不允許在應用中自行顯式創建線程。

【Major】

  1. POJO類必須寫toString方法。使用工具類source> generate toString時,如果繼承了另一個POJO類,註意在前面加一下super.toString。
  2. 不允許任何魔法值(即未經定義的常量)直接出現在代碼中。
  3. 中括號是數組類型的一部分,數組定義如下:String[] args
  4. 事務場景中,拋出異常被catch後,如果需要回滾,一定要手動回滾事務
  5. 關於基本數據類型與包裝數據類型的使用標準如下:(1)所有的POJO類屬性必須使用包裝數據類型。(2)RPC方法的返回值和參數必須使用包裝數據類型。(3)所有的局部變量推薦使用基本數據類型
  6. 包名統一使用小寫,點分隔符之間有且僅有一個自然語義的英語單詞。包名統一使用單數形式,但是類名如果有復數含義,類名可以使用復數形式
  7. 單個方法的總行數不超過80行。
  8. 及時清理不再使用的代碼段或配置信息。
  9. 定義DO/DTO/VO等POJO類時,不要加任何屬性默認值
  10. 循環體內,字符串的聯接方式,使用StringBuilder的append方法進行擴展。
  11. 所有的抽象方法(包括接口中的方法)必須要用javadoc註釋、除了返回值、參數、異常說明外,還必須指出該方法做什麽事情,實現什麽功能。
  12. 所有的類都必須添加創建者信息。
  13. 方法內部單行註釋,在被註釋語句上方另起一行,使用//註釋。方法內部多行註釋使用/* */註釋。註意與代碼對齊。
  14. 類、類屬性、類方法的註釋必須使用javadoc規範,使用/**內容*/格式,不得使用//xxx方式和/*xxx*/方式。
  15. 類名使用UpperCamelCase風格,必須遵從駝峰形式,但以下情形例外:(領域模型的相關命名)DO / BO / DTO / VO / DAO
  16. 避免采用取反邏輯運算符。
  17. 除常用方法(如getXxx/isXxx)等外,不要在條件判斷中執行復雜的語句,將復雜邏輯判斷的結果賦值給一個有意義的布爾變量,以提高可讀性。
  18. 集合初始化時,指定集合初始值大小

代碼走查案例2