06.06 《阿里巴巴JAVA開發手冊》發佈詳盡版,新增16條設計規約

2018年6月5日,《阿里巴巴Java開發手冊》再次升級代碼規範,新增了16條設計規約!

《阿里巴巴Java開發手冊》是阿里內部Java工程師所遵循的開發規範,涵蓋編程規約、單元測試規約、異常日誌規約、MySQL規約、工程規約、安全規約等,這是近萬名阿里Java技術精英的經驗總結。

《阿里巴巴JAVA開發手冊》發佈詳盡版,新增16條設計規約

規範下載鏈接:https://102.alibaba.com/downloadFile.do?file=1528185610558/JAVA1.4.pdf

為何要新增設計規約?

膾炙人口的唐詩“兩個黃鸝鳴翠柳,一行白鷺上青天”,清爽直接,簡明易懂。可讀性好的代碼也是讓人陶醉的,那麼如何寫出可讀性的代碼?

代碼的可讀性是指代碼讓人容易閱讀、理解、調試、可預料的程度。提高代碼的可讀性可以為代碼閱讀者節約時間和精力,提升團隊協作效率。熟悉和遵守《阿里巴巴JAVA開發手冊》的編程風格,那只是“標”,而代碼可讀性的“本”可以追溯到軟件設計階段。試想一下如果髮型師沒有設計好,不用指望能剪出一個“可讀性”比較好的你。

設計是一種夢想和追求,誰都喜歡有氣質的女神,誰都會欣賞有設計感的代碼。你可能會問,什麼是設計感?就像燒飯這件事,村姑和御廚都會燒,都能吃飽,但是菜品的美感、口感,有本質的區別。代碼到藝術層面上,能夠體現出來非常好的擴展性、解耦性。代碼就象積木一樣,換一個搭法,也是OK的,結構清晰,不用擔心拔出蘿蔔帶出泥。

何為16條?

設計規約是根據阿里巴巴實際項目架構經驗提煉而成,共16條。設計規約主要從UML圖和架構設計原則來規定比較基礎的軟件設計理念,並且明確了超過什麼樣的閾值需要以什麼樣的方式來呈現設計思維。根據阿里巴巴內部的反饋聲音來看,對於數據底層結構、狀態圖、以及敏捷開發相關的三條,共鳴感最強,那麼詳細點評一下:

數據底層結構

底層數據結構屬於大廈的地基工程,如果地基不穩,那麼上層去修正難度是相當大的,甚至是無法修正。所以設計規約提倡,存儲方案和底層數據結構的設計獲得評審一致通過,並沉澱成為文檔。有缺陷的底層數據結構容易導致系統風險高,可擴展性差,重構成本因歷史數據遷移、系統平滑過渡也會陡然增加,所以,存儲方案和數據結構需要認真地進行設計和評審,生產環境提交執行後,需要進行double check。評審內容包括存儲介質選型、表結構設計能否滿足技術方案、存取性能和存儲空間能否滿足業務發展、表或字段之間的辯證關係、字段名稱、字段類型、索引等;數據結構變更(如在原有表中新增字段)也需要進行評審通過後上線。

狀態圖

業務對象狀態相關的編碼錯誤是引起線上故障的一個重要導火索。多一個狀態,少一個狀態,如果沒有歷史設計文檔沉澱,那麼都是災難性的。如果某個業務對象的狀態超過3個,使用狀態圖來表達並且明確狀態變化的各個觸發條件。狀態圖的核心是對象狀態,首先明確對象有多少種狀態,然後明確兩兩狀態之間是否存在直接轉換關係,再明確觸發狀態轉換的條件是什麼。淘寶訂單狀態有已下單、待付款、已付款、待發貨、已發貨、已收貨等。比如已下單與已收貨這兩種狀態之間是不可能有直接轉換關係的。

敏捷開發

敏捷開發是當下流行的一種開發模式,相比傳統軟件生產流程,更加快速地交付。但是,敏捷開發適合於信任度好、理解力強、技術水平相對一致的創業型團隊。但是在很多公司敏捷成為一個抓進度的拔苗助長式的藉口。所以避免如下誤解:敏捷開發 = 講故事 + 編碼 + 發佈。敏捷開發是快速交付迭代可用的系統,省略多餘的設計方案,摒棄傳統的審批流程,但核心關鍵點上的必要設計和文檔沉澱是需要的。

寫在最後

《阿里巴巴Java開發手冊》的使命,在於幫助工程師脫離繁瑣,重燃技術激情。業務會變、玩法會變、需求會變,做好代碼質量的決心永不會變。

不斷打磨技術,成為更好的自己,我們共勉。


分享到:


相關文章: