Like Share Discussion Bookmark Smile

J.J. Huang   2020-04-27   Java   瀏覽次數:

《阿里Java開發手冊》 | 前言、目錄

《Java 開發手冊》是阿里巴巴集團技術團隊的集體智慧結晶和經驗總結,經歷了多次大規模一線實戰的檢驗及不斷完善,公開到業界後,眾多社區開發者踴躍參與,共同打磨完善,系統化地整理成冊。現代軟體行業的高速發展對開發者的綜合素質要求越來越高,因為不僅是編程知識點,其它維度的知識點也會影響到軟體的最終交付質量。比如:資料庫的表結構和索引設計缺陷可能帶 來軟體上的架構缺陷或性能風險;工程結構混亂導致後續維護艱難;沒有鑑權的漏洞程式碼易被黑客 攻擊等等。所以本手冊以 Java 開發者為中心視角,劃分為編程規約、異常日誌、單元測試、安全規約、MySQL 資料庫、工程結構、設計規約七個維度,再根據內容特徵,細分成若干二級子目錄。另外,依據約束力強弱及故障敏感性,規約依次分為強制、推薦、參考三大類。在延伸訊息中,“說明”對規約做了適當擴展和解釋;“正例”提倡什麼樣的編碼和實作方式;“反例”說明需要提防的雷區,以及真實的錯誤案例。

手冊的願景是碼出高效,碼出質量。現代軟體架構的複雜性需要協同開發完成,如何高效地協同呢?無規矩不成方圓,無規範難以協同,比如,制訂交通法規表面上是要限制行車權,實際上是保障公眾的人身安全,試想如果沒有限速,沒有紅綠燈,誰還敢上路行駛?對軟體來說,適當的規範和標準絕不是消滅程式碼內容的創造性、優雅性,而是限製過度個性化,以一種普遍認可的統一方式一起做事,提升協作效率,降低溝通成本。程式碼的字裡行間流淌的是軟體系統的血液,質量的提 升是盡可能少踩坑,杜絕踩重複的坑,切實提升系統穩定性,碼出質量。

我們已經在 2017 杭州雲棲大會上發布了配套的 Java 開發規約 IDE 插件,阿里雲效也集成了 程式碼規約掃描引擎。次年,發布36 萬字的配套詳解圖書《碼出高效》,本書秉持“圖勝於表,表勝於言”的理念,深入淺出地將計算機基礎、面向對象思想、JVM 探源、資料結構與集合、並發與多執行緒(thread)、單元測試等知識客觀、立體地呈現出來。緊扣學以致用、學以精進的目標,結合阿里巴巴實 踐經驗和故障案例,與底層源碼解析融會貫通,娓娓道來。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
目錄
一、編程規約
(一) 命名風格
(二) 常數定義
(三) 程式碼格式
(四) OOP 規約
(五) 集合處理
(六) 並發處理
(七) 控制語句
(八) 註解規約
(九) 其它

二、異常日誌
(一) 異常處理
(二) 日誌規約

三、單元測試

四、安全規約

五、MySQL資料庫
(一) 建表規約
(二) 索引規約
(三) SQL 語句
(四) ORM 映射

六、工程結構
(一) 應用分層
(二) 二方庫依賴
(三) 伺服器

七、設計規約
附 1:版本歷史
附 2:專有名詞解釋
版本號 制定團隊 更新日期 備註
1.5.0 阿里巴巴與 Java 社區開發者 2019.06.19 華山版,新增 21 條,修改描述 112 處

專有名詞解釋

這邊先將書中提到的專有名詞拉到這邊,建議先行閱讀,以利後續章節加速理解。<包含了華山版和泰山版>

  • CAS(Compare And Swap): 阿里巴巴專指資料庫表一一對應的 POJO 類。解決多執行緒(thread)並行情況下使用鎖造成性能損耗的一種機制,這是硬件實作的原子操作。 CAS 操作包含三個操作數:內存位置、預期原值和新值。如果內存位置的值與預期原值相匹配,那麼處理器會自動將該位置值更新為新值。否則,處理器不做任何操作。
  • DO(Data Object): 阿里巴巴專指資料庫表一一對應的 POJO 類。
  • AQS(AbstractQueuedSynchronizer):利用先進先出隊列實作的底層同步工具類,它是很多上層同步實作類的基礎,比如:ReentrantLock、CountDownLatch、Semaphore等,它們通過繼承AQS實作其模版方法,然後將AQS子類作為同步組件的內部類,通常命名為Sync。
  • AO(Application Object): 阿里巴巴專指 Application Object,即在 Service 層上,極為貼近 業務的複用程式碼。
  • POJO(Plain Ordinary Java Object):在本手冊中,POJO 專指只有 setter / getter / toString 的簡單類,包括 DO/DTO/BO/VO 等。
  • GAV(GroupId、ArtifactctId、Version):Maven坐標,是用來唯一標識jar包。
  • OOP(Object Oriented Programming): 本手冊泛指類、對象的編程處理方式。
  • ORM(Object Relation Mapping):對象關係映射,對象領域模型與底層資料之間的轉換,本文泛指 iBATIS, mybatis 等框架。
  • NPE(java.lang.NullPointerException):空指針異常。
  • SOA(Service-Oriented Architecture):面向服務架構,它可以根據需求通過網路對鬆散耦合的粗粒度應用組件進行分散式部署、組合和使用,有利於提升組件可重用性,可維護性。
  • IDE(Integrated Development Environment):用於提供程序開發環境的應用程序,一般包括 程式碼編輯器、編譯器、調試器和圖形用戶界面等工具,本《手冊》泛指 IntelliJ IDEA 和 eclipse。
  • OOM(Out Of Memory):源於 java.lang.OutOfMemoryError,當 JVM 沒有足夠的內存來 為對象分配空間並且垃圾回收器也無法回收空間時,系統出現的嚴重狀況。
  • 一方庫:本工程內部子項目模組依賴的庫(jar包)。
  • 二方庫:公司內部發佈到中央倉庫,可供公司內部其它應用依賴的庫(jar 包)。
  • 三方庫:公司之外的開源庫(jar 包)。

結語

文章越看越多,技術越學越多,就會發現自己的不足;技術學到後面都會想要將基礎再重新在打得更加扎實。

以前在開發覺得理所當然的事情,例如:命名規則、命名規範,照著別人怎麼說就怎麼做的想法,並沒有好好去想為什麼要這樣設計和規範。
於是乎同事們推薦《阿里巴巴Java開發手冊》來做閱讀,書中提到種種規範《正確範例》、《錯誤範例》還有解釋定義說明;我相信在閱讀完這一系列後,一定會更加扎實且實在。而且非常巧合的當自己決定閱讀這手冊後,阿里巴巴剛好推出<泰山版>2020/04/2x推出此版本。

書籍部分內容展示:

如對此書有興趣,建議去購買官方認證的書籍,給予官方支持。

註:如有侵權,通知即刪。


註:以上參考了
Alibaba-Java-Coding-Guidelines Github
Alibaba-Java-Coding-Guidelines English Version