摘自:https://yq.aliyun.com/articles/69327git
-------------- 2018.6.6日更新 --------------程序員
阿里巴巴Java開發手冊v1.4.0(詳盡版)發佈,新增16條設計規約。設計規約是根據阿里巴巴實際項目架構經驗提煉而成,主要從UML圖和架構設計原則來規定比較基礎的軟件設計理念,而且明確了超過什麼樣的閾值須要以什麼樣的方式來呈現設計思惟。github
點擊下載《阿里巴巴Java開發手冊》v1.4.0(詳盡版):https://yq.aliyun.com/attachment/download/?id=5585算法
編碼規範考試認證:https://edu.aliyun.com/certification/cldt02數據庫
IDE插件下載:https://github.com/alibaba/p3c編程
代碼的可讀性是指代碼讓人容易閱讀、理解、調試、可預料的程度。提升代碼的可讀性能夠爲代碼閱讀者節約時間和精力,提高團隊協做效率。熟悉和遵照《阿里巴巴Java開發手冊》的編程風格,那只是「標」,而代碼可讀性的「本」能夠追溯到軟件設計階段。根據阿里巴巴內部的反饋聲音來看,對於數據底層結構、狀態圖、以及敏捷開發相關的三條,共鳴感最強,那麼詳細點評一下。json
1. 數據底層結構後端
底層數據結構屬於大廈的地基工程,若是地基不穩,那麼上層去修正難度是至關大的,甚至是沒法修正。因此設計規約提倡,存儲方案和底層數據結構的設計得到評審一致經過,並沉澱成爲文檔。有缺陷的底層數據結構容易致使系統風險高,可擴展性差,重構成本因歷史數據遷移、系統平滑過渡也會陡然增長,因此,存儲方案和數據結構須要認真地進行設計和評審,生產環境提交執行後,須要進行double check。評審內容包括存儲介質選型、表結構設計可否知足技術方案、存取性能和存儲空間可否知足業務發展、表或字段之間的辯證關係、字段名稱、字段類型、索引等;數據結構變動(如在原有表中新增字段)也須要進行評審經過後上線。安全
2. 狀態圖服務器
業務對象狀態相關的編碼錯誤是引發線上故障的一個重要導火索。多一個狀態,少一個狀態,若是沒有歷史設計文檔沉澱,那麼都是災難性的。若是某個業務對象的狀態超過3個,使用狀態圖來表達而且明確狀態變化的各個觸發條件。狀態圖的核心是對象狀態,首先明確對象有多少種狀態,而後明確兩兩狀態之間是否存在直接轉換關係,再明確觸發狀態轉換的條件是什麼。淘寶訂單狀態有已下單、待付款、已付款、待發貨、已發貨、已收貨等。好比已下單與已收貨這兩種狀態之間是不可能有直接轉換關係的。
3. 敏捷開發
敏捷開發是當下流行的一種開發模式,相比傳統軟件生產流程,更加快速地交付。可是,敏捷開發適合於信任度好、理解力強、技術水平相對一致的創業型團隊。可是在不少公司敏捷成爲一個抓進度的適得其反式的藉口。因此避免以下誤解:敏捷開發 = 講故事 + 編碼 + 發佈。敏捷開發是快速交付迭代可用的系統,省略多餘的設計方案,摒棄傳統的審批流程,但核心關鍵點上的必要設計和文檔沉澱是須要的。
關於《阿里巴巴Java開發手冊》
《阿里巴巴Java開發手冊》是阿里內部Java工程師所遵循的開發規範,涵蓋編程規約、異常日誌、單元測試、安全規約、MySQL數據庫、工程規約、設計規約等,這是近萬名阿里Java技術精英的經驗總結,並經歷了屢次大規模一線實戰檢驗及完善。這是阿里回饋給Java社區的一份禮物,但願可以幫助企業開發團隊在Java開發上更高效、容錯、有協做性,提升代碼質量,下降項目維護成本。
阿里雲大學結合《阿里巴巴Java開發手冊》,推出了「阿里巴巴編碼規範」認證,經過在線考試,檢測你對手冊中開發規範的掌握程度,併發放官方認證證書。當即考試:https://edu.aliyun.com/certification/cldt02
你是否曾因Java代碼規範版本紛雜而無所適從?
你是否想過代碼規範能將系統故障率下降20%?
你是否曾因團隊代碼風格迥異而協同困難?
你是否正在review一些本來能夠避免的故障?
你是否沒法肯定本身的代碼足夠健壯?
碼出高效,碼出質量!
相比C++代碼規範業界已經達成共識,Java代碼規範業界比較混亂,咱們期待此次發佈的Java代碼規範可以給業界帶來一個標準,促使總體行業代碼規範水平獲得提升,最終可以幫助企業和開發者提高代碼質量和下降代碼故障率。
阿里出品,質量保證!
阿里Java技術團隊一手打造出Dubbo、JStorm、Fastjson等諸多流行開源框架,部分已成爲Apache基金會孵化項目;
阿里在Java後端領域支撐起全球訪問量最大的服務器集羣;
Java代碼構建的阿里雙11業務系統訂單處理能力達到17.5萬筆/秒;
到目前已累計數億行高併發、高穩定性的最佳Java代碼實踐;
……
這次公開的Java開發手冊正是出自這樣的團隊,近萬名阿里Java技術精英的經驗總結,並經歷了屢次大規模一線實戰檢驗及完善,鑄就了這本高含金量的阿里Java開發手冊。該手冊以Java開發者爲中心視角,劃分爲編程規約、異常日誌規約、MYSQL規約、工程規約、安全規約五大塊,再根據內容特徵,細分紅若干二級子目錄。根據約束力強弱和故障敏感性,規約依次分爲強制、推薦、參考三大類。此套規範不只能讓代碼一目瞭然, 更有助於增強團隊分工與合做、真正提高效率。
無規矩不成方圓 無規範不能協做
衆所周知,制訂交通法規表面上是要限制行車權,其實是保障公衆的人身安全。試想若是沒有限速,沒有紅綠燈,沒有規定靠右行駛,誰還敢上路行駛。
同理,對軟件來講,適當的規範和標準毫不是消滅代碼內容的創造性、優雅性,而是限制過分個性化,以一種廣泛承認的方式一塊兒作事,下降故障率,提高協做效率。開發手冊詳細列舉如何開發更加高效,更加容錯,更加有協做性,力求知其然,更知其否則,結合正反例,提升代碼質量。好比,異常日誌處理時的各類不規範行爲;集合轉換的各類坑;建立線程池出現的等待隊列OOM等。
阿里技術資深大咖聯袂推薦
阿里高級研究員多隆:工程師對於代碼,必定要「精益求精」,不論從性能,仍是簡潔優雅,都要具有「精益求精」的工匠精神,認真打磨本身的做品。
阿里研究員畢玄:一個優秀的工程師和一個普通工程師的區別,不是如今滿天飛的架構圖,他的功底就是體如今他寫的每一行代碼上。
阿里研究員玄難:代碼是軟件工程裏面的產品設計、系統架構設計等工做的最後承載體,代碼的質量決定了一切工做的成敗。
阿里巴巴B2B事業羣CTO李純:好的軟件產品離不開工程師高質量的代碼及相互間順暢的溝通與合做。簡單,適用的代碼規約背後所傳遞的是技術上的追求卓越、協同合做的精神,是每一個技術團隊不可缺失的重要利器。
阿里研究員、HipHop做者:趙海平(花名:福貝):程序員是創造個性化做品的藝術家,但同時也是須要團隊合做的工種。個性化應儘可能表如今代碼效率和算法方面,犧牲小我,成就大我。
擁抱規範,遠離傷害!
開發的同窗們趕忙行動起來,遵照代碼規範,你好,我好,你們好!