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