摘要:2018年6月,《阿里巴巴Java開發手冊》再次刷新代碼規範認知,咱們新增了16條設計規約!現免費開放下載,不可錯過!
《阿里巴巴Java開發手冊》是阿里內部Java工程師所遵循的開發規範,涵蓋編程規約、單元測試規約、異常日誌規約、MySQL規約、工程規約、安全規約等,這是近萬名阿里Java技術精英的經驗總結,並經歷了屢次大規模一線實戰檢驗及完善。這是阿里回饋給Java社區的一份禮物,但願可以幫助企業開發團隊在Java開發上更高效、容錯、有協做性,提升代碼質量,下降項目維護成本。編程
2018年6月5日,《阿里巴巴Java開發手冊》再次刷新代碼規範認知,咱們新增了16條設計規約!安全
點此免費下載《阿里巴巴Java開發手冊》(詳盡版)數據結構
爲什麼要新增設計規約?架構
膾炙人口的唐詩「兩個黃鸝鳴翠柳,一行白鷺上青天」,清爽直接,簡明易懂。可讀性好的代碼也是讓人陶醉的,那麼如何寫出可讀性的代碼?性能
代碼的可讀性是指代碼讓人容易閱讀、理解、調試、可預料的程度。提升代碼的可讀性能夠爲代碼閱讀者節約時間和精力,提高團隊協做效率。熟悉和遵照《阿里巴巴JAVA開發手冊》的編程風格,那只是「標」,而代碼可讀性的「本」能夠追溯到軟件設計階段。試想一下若是髮型師沒有設計好,不用期望能剪出一個「可讀性」比較好的你。單元測試
設計是一種夢想和追求,誰都喜歡有氣質的女神,誰都會欣賞有設計感的代碼。你可能會問,什麼是設計感?就像燒飯這件事,村姑和御廚都會燒,都能吃飽,可是菜品的美感、口感,有本質的區別。代碼到藝術層面上,可以體現出來很是好的擴展性、解耦性。代碼就象積木同樣,換一個搭法,也是OK的,結構清晰,不用擔憂拔出蘿蔔帶出泥。測試
何爲16條?編碼
設計規約是根據阿里巴巴實際項目架構經驗提煉而成,共16條。設計規約主要從UML圖和架構設計原則來規定比較基礎的軟件設計理念,而且明確了超過什麼樣的閾值須要以什麼樣的方式來呈現設計思惟。根據阿里巴巴內部的反饋聲音來看,對於數據底層結構、狀態圖、以及敏捷開發相關的三條,共鳴感最強,那麼詳細點評一下:架構設計
數據底層結構設計
底層數據結構屬於大廈的地基工程,若是地基不穩,那麼上層去修正難度是至關大的,甚至是沒法修正。因此設計規約提倡,存儲方案和底層數據結構的設計得到評審一致經過,並沉澱成爲文檔。有缺陷的底層數據結構容易致使系統風險高,可擴展性差,重構成本因歷史數據遷移、系統平滑過渡也會陡然增長,因此,存儲方案和數據結構須要認真地進行設計和評審,生產環境提交執行後,須要進行double check。評審內容包括存儲介質選型、表結構設計可否知足技術方案、存取性能和存儲空間可否知足業務發展、表或字段之間的辯證關係、字段名稱、字段類型、索引等;數據結構變動(如在原有表中新增字段)也須要進行評審經過後上線。
狀態圖
業務對象狀態相關的編碼錯誤是引發線上故障的一個重要導火索。多一個狀態,少一個狀態,若是沒有歷史設計文檔沉澱,那麼都是災難性的。若是某個業務對象的狀態超過3個,使用狀態圖來表達而且明確狀態變化的各個觸發條件。狀態圖的核心是對象狀態,首先明確對象有多少種狀態,而後明確兩兩狀態之間是否存在直接轉換關係,再明確觸發狀態轉換的條件是什麼。淘寶訂單狀態有已下單、待付款、已付款、待發貨、已發貨、已收貨等。好比已下單與已收貨這兩種狀態之間是不可能有直接轉換關係的。
敏捷開發
敏捷開發是當下流行的一種開發模式,相比傳統軟件生產流程,更加快速地交付。可是,敏捷開發適合於信任度好、理解力強、技術水平相對一致的創業型團隊。可是在不少公司敏捷成爲一個抓進度的適得其反式的藉口。因此避免以下誤解:敏捷開發 = 講故事 + 編碼 + 發佈。敏捷開發是快速交付迭代可用的系統,省略多餘的設計方案,摒棄傳統的審批流程,但核心關鍵點上的必要設計和文檔沉澱是須要的。
寫在最後
咱們相信技術之心生生不息,也相信好的規約值得被傳播和應用。
本次新增的不單是16條新的設計規約,仍是千萬阿里人的技術之心。
咱們也期待你們的意見,持續完善,
那麼說說你們眼裏的軟件設計中遇到的坑吧。
本文做者:孤盡