阿里巴巴代码规范-note
生活随笔
收集整理的這篇文章主要介紹了
阿里巴巴代码规范-note
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
阿里巴巴在之前的云棲大會上正式發出了?阿里巴巴Java開發手冊. 并發布相關的Idea插件. 具體的信息可以到Github主頁?p3c查看. 最近將手冊重新學習了一遍, 發現在之前的工程項目里面, 有太多不規范的地方. 將特別注意的地方, 重點標記出來.
- Object 的 equals 方法容易拋空指針異常. 盡量使用, Objects.equals(JDK7進行比較, 匹配).
- 所有的相同類型的?包裝類對象之間值的比較,全部使用 equals 方法比較. 否則超過128的時候, 會出現bug.
- RPC方法的返回值和參數必須使用包裝數據類型?. 防止初始化, 設置了相應的默認值. 這點非常重要
- 在?getter/setter?方法中,不要增加業務邏輯,增加排查問題的難度. 可以使用lombok依賴包.
- 循環體內,字符串的連接方式,使用 StringBuilder 的 append 方法進行擴展
- ArrayList的subList結果不可強轉成ArrayList,否則會拋出ClassCastException?異常,即java.util.RandomAccessSubList cannot be cast to java.util.ArrayList.
- 集合初始化時,指定集合初始值大小。
- 創建線程或線程池時請指定有意義的線程名稱,方便出錯時回溯.
- 線程資源必須通過線程池 供,不允許在應用中自行顯式創建線程. 需要通過線程池進行資源定位.
- 線程池不允許使用 Executors 去創建,而是通過 ThreadPoolExecutor 的方式,這樣 的處理方式讓寫的同學更加明確線程池的運行規則,規避資源耗盡的風險。
- 在一個 switch 塊內,都必須包含一個 default 語句并且 放在最后,即使它什么代碼也沒有
- 盡量避免 if else else if.?超過三層的嵌套使用 衛語句來進行編程.
- 類、類屬性、類方法的注釋必須使用 Javadoc 規范,使用/*內容/格式,不得使用 // xxx 方式.
- 方法內部單行注釋,在被注釋語句上方另起一行,使用//注釋
- 獲取當前毫秒數 System.currentTimeMillis(); 而不是 new Date().getTime();
- 任何數據結構的構造或初始化,都應指定大小,避免數據結構無限增長吃光內存。
- 及時清理不再使用的代碼段或配置信息
- 對大段代碼進行 try-catch,這是不負責任的表現
- 有 try 塊放到了事務代碼中,catch 異常后,如果需要回滾事務,一定要注意手動回 滾事務.?這個需要確定如何執行?
- 防止NPE是調用者的責任. 明確出來. 要考慮你使用的對象是否可能為空指針.
- 遠程調用的時候, 一律要求進行空指針判斷. 防止NPE問題的產生. 防止NPE問題, 可以使用JDK8的 optional.?http://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html.
- 異常信息應該包括兩類信息:案發現場信息和異常堆棧信息.
- 大量地輸出無效日志,不利于系統性能 升,也不利于快速定位錯誤點.
- 好的單元測試必須遵守AIR原則. 必須執行AIR.
- A 自動化
- I 獨立性
- R 可重復
- 單元測 試中不準使用 System.out 來進行人肉驗證,必須使用 assert 來驗證. 單元測試, 是一個重要而不緊急的事情.
- 核心業務、核心應用、核心模塊的?增量代碼確保單元測試通過
- 在工程規約的應用分層中 到的 DAO 層,Manager 層,可重用度高的 Service,都應該?進行單元測試。
- 和數據庫相關的單元測試,可以設定自動回滾機制,不給數據庫造成臟數據
- 小數類型為 decimal,禁止使用 float 和 double
- 表必備三字段:id, create_time, mod_time. 自增ID, 創建時間, 修改時間.
- 不過過早的進行分表, 單表行數超過 500 萬行或者單表容量超過 2GB,才推薦進行分庫分表。
- 業務上具有唯一特性的字段,即使是多個字段的組合,也必須建成唯一索引.(建立唯一索引)
- SQL操作消小心: 數據訂正時,刪除和修改記錄時,要先 select,避免出現誤刪除,確認無誤才能執 行更新語句
- @Transactional 事務不要濫用. 事務會影響數據庫的 QPS,另外使用事務的地方需 要考慮各方面的回滾方案,包括緩存回滾、搜索引擎回滾、消息補償、統計修正
- 在?Service 層出現異常時,必須記錄出錯日志到磁盤,盡可能帶 上參數信息,相當于保護案發現場. 一定要保留請求參數. 保留案發現場.
- 線上應用不要依賴 SNAPSHOT 版本(安全包除外).
- 給 JVM?設置-XX:+HeapDumpOnOutOfMemoryError 參數,讓 JVM 碰到 OOM 場景時輸出 dump 信息.
- 在線上生產環境,JVM的Xms和Xmx設置一樣大小的內存容量,避免在GC 后調整堆 大小帶來的壓力。
總結
以上是生活随笔為你收集整理的阿里巴巴代码规范-note的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Validation(使用
- 下一篇: 脏读、幻读和不可重复读 + 事务隔离级别