現在業界java代碼的規范比較混亂,阿里巴巴開發整理的阿里巴巴Java開發手冊能夠促使整體行業代碼規范水平得到提高,使Java開發更高效、更加容錯、更加具有協作性,提升協作效率,提高代碼質量,降低代碼維護成本。
阿里巴巴Java開發手冊最新版給各位程序猿們帶來下載。
相關介紹:
《阿里巴巴Java開發手冊》是阿里巴巴的內部編碼規范,阿里官方的Java代碼規范標準, 手冊以Java應用開發為維度,分為編程規約、異常日志規約、MYSQL規約、工程規約、安全規約五個章節,給出了強制、推薦、參考三個級別,每條規范都有推薦的約束力度,從命名到項目拆分,不僅規范了一些開發細節,也提出了很多工程開發的哲學,值得好好閱讀。
阿里巴巴集團推出的《阿里巴巴Java開發手冊(正式版)》是阿里巴巴近萬名開發同學集體智慧的結晶,以開發視角為中心,詳細列舉如何開發更加高效、更加容錯、更加有協作性,力求知其然,更知其不然,結合正反例,讓Java開發者能夠提升協作效率、提高代碼質量。
部分提綱:
一、編程規約
1.如果使用到了設計模式,建議在類名中體現出具體模式
將設計模式體現在名字中,有利于閱讀者快速理解架構設計思想。
2.相同參數類型,相同業務含義,才可以使用 Java 的可變參數,避免使用 Object
可變參數必須放置在參數列表的最后,盡量不用可變參數編程。
3.對外暴露的接口簽名,原則上不允許修改方法簽名,避免對接口調用方產生影響
接口過時必須加@Deprecated 注解,并清晰地說明采用的新接口或者新服務是什么。
4.關于基本數據類型與包裝數據類型的使用標準如下
1) 所有的POJO類屬性必須使用包裝數據類型
2) RPC方法的返回值和參數必須使用包裝數據類型
3) 所有的局部變量【推薦】使用基本數據類型
POJO 類屬性沒有初值是醒使用者在需要使用時,必須自己顯式地進行賦值,任何 NPE 問題,或者入庫檢查,都由使用者來保證。數據庫的查詢結果可能是null,因為自動拆箱,用基本數據類型接收有NPE風險。
5.注意 serialVersionUID 不一致會拋出序列化運行時異常
序列化類新增屬性時,請不要修改 serialVersionUID 字段,避免反序列失敗;如果完全不兼容升級,避免反序列化混亂,那么請修改 serialVersionUID 值。
6.POJO 類必須寫 toString 方法
使用 IDE 的中工具:source> generate toString 時,如果繼承了另一個 POJO 類,注意在前面加一下 super.toString。 在方法執行拋出異常時,可以直接調用 POJO 的 toString()方法打印其屬性值,便于排查問題。
7.final 可提高程序響應效率,聲明成 final 的情況:
1) 不需要重新賦值的變量,包括類屬性、局部變量
2) 對象參數前加final,表示不允許修改引用的指向
3) 類方法確定不允許被重寫
8.慎用 Object 的 clone 方法來拷貝對象
對象的 clone 方法默認是淺拷貝,若想實現深拷貝需要重寫 clone 方法實現屬性對象 的拷貝。
9.類成員與方法訪問控制從嚴
1) 如果不允許外部直接通過new來創建對象,那么構造方法必須是private
2) 工具類不允許有public或default構造方法
3) 類非static成員變量并且與子類共享,必須是protected 4) 類非static成員變量并且僅在本類使用,必須是private
5) 類static成員變量如果僅在本類使用,必須是private
6) 若是static成員變量,必須考慮是否為final
7) 類成員方法只供類內部調用,必須是private
8) 類成員方法只對繼承類公開,那么限制為protected
任何類、方法、參數、變量,嚴控訪問范圍。過寬泛的訪問范圍,不利于模塊解耦。思考:如果是一個 private 的方法,想刪除就刪除,可是一個 public 的 Service 方法,或者一個 public 的成員變量,刪除一下,不得手心冒點汗嗎?變量像自己的小孩,盡量在自己的視線內,變量作用域太大,如果無限制的到處跑,那么你會擔心的。
10.ArrayList的subList結果不可強轉成ArrayList,否則會拋出ClassCastException 異常
subList 返回的是 ArrayList 的內部類 SubList,并不是 ArrayList ,而是 ArrayList 的一個視圖,對于SubList子列表的所有操作最終會反映到原列表上。
新版改動:
1、增加手冊前言;
2、增加版本歷史;
3、增加專有名詞解釋。
- PC官方版
- 安卓官方手機版
- IOS官方手機版