如何提升代码可读性?阿里发布16条设计规约
膾炙人口的唐詩“兩個黃鸝鳴翠柳,一行白鷺上青天”,清爽直接,簡明易懂。可讀性好的代碼也是讓人陶醉的,那么如何寫出可讀性的代碼?
近期,《阿里巴巴Java開發手冊》推出詳盡版,新增16條設計規約,讓優雅的代碼觸手可及。下面讓我們一起來了解。
《阿里巴巴Java開發手冊》最新詳盡版下載:
https://102.alibaba.com/downloadFile.do?file=1528269849853/Java_manual.pdf
該書是阿里內部Java工程師所遵循的開發規范,涵蓋編程規約、單元測試規約、異常日志規約、MySQL規約、工程規約、安全規約等,讓我們一起碼出高效、碼出質量。
為何要新增設計規約?
代碼的可讀性是指代碼讓人容易閱讀、理解、調試、可預料的程度。提高代碼的可讀性可以為代碼閱讀者節約時間和精力,提升團隊協作效率。熟悉和遵守《阿里巴巴JAVA開發手冊》的編程風格,那只是“標”,而代碼可讀性的“本”可以追溯到軟件設計階段。試想一下如果發型師沒有設計好,不用指望能剪出一個“可讀性”比較好的你。
設計是一種夢想和追求,誰都喜歡有氣質的女神,誰都會欣賞有設計感的代碼。你可能會問,什么是設計感?就像燒飯這件事,村姑和御廚都會燒,都能吃飽,但是菜品的美感、口感,有本質的區別。代碼到藝術層面上,能夠體現出來非常好的擴展性、解耦性。代碼就象積木一樣,靈活搭建,結構清晰,不用擔心拔出蘿卜帶出泥。
何為16條?
萬事萬物皆有法則,這種理論層面的抽象來自于實踐,同時理論指導下的實踐又不斷地修正或夯實理論。軟件設計有七大基礎原則,分別是:單一原則、開閉原則、里氏代換原則、組合復用原則、接口隔離原則、 依賴倒置原則、迪米特原則,這些原則指導著實際代碼生產中的模塊、類、方法的實現。
設計規約是根據阿里巴巴實際項目架構經驗提煉而成,共16條。設計規約主要從UML圖和架構設計原則來規定比較基礎的軟件設計理念,并且明確了超過什么樣的閾值需要以什么樣的方式來呈現設計思維。根據阿里巴巴內部的反饋聲音來看,對于數據底層結構、狀態圖、以及敏捷開發相關的三條,共鳴感最強,那么詳細點評一下:
數據底層結構
底層數據結構屬于大廈的地基工程,如果地基不穩,那么上層去修正難度是相當大的,甚至是無法修正。所以設計規約提倡,存儲方案和底層數據結構的設計獲得評審一致通過,并沉淀成為文檔。有缺陷的底層數據結構容易導致系統風險高,可擴展性差,重構成本因歷史數據遷移、系統平滑過渡也會陡然增加,所以,存儲方案和數據結構需要認真地進行設計和評審,生產環境提交執行后,需要進行double check。
評審內容包括存儲介質選型、表結構設計能否滿足技術方案、存取性能和存儲空間能否滿足業務發展、表或字段之間的辯證關系、字段名稱、字段類型、索引等;數據結構變更(如在原有表中新增字段)也需要進行評審通過后上線。
狀態圖
業務對象狀態相關的編碼錯誤是引起線上故障的一個重要導火索。多一個狀態,少一個狀態,如果沒有歷史設計文檔沉淀,那么都是災難性的。如果某個業務對象的狀態超過3個,使用狀態圖來表達并且明確狀態變化的各個觸發條件。
狀態圖的核心是對象狀態,首先明確對象有多少種狀態,然后明確兩兩狀態之間是否存在直接轉換關系,再明確觸發狀態轉換的條件是什么。淘寶訂單狀態有已下單、待付款、已付款、待發貨、已發貨、已收貨等。比如已下單與已收貨這兩種狀態之間是不可能有直接轉換關系的。
敏捷開發
敏捷開發是當下流行的一種開發模式,相比傳統軟件生產流程,更加快速地交付,短平快上線,占領前沿市場。但是,敏捷開發僅適合于信任度好、理解力強、技術水平相對一致的創業型團隊。但目前在很多公司,敏捷成為一個抓進度的拔苗助長式的借口,導致交付質量很差,開發同學幸福感低,用戶黏性差的現象,所以避免如下誤解:敏捷開發 = 講故事 + 編碼 + 發布。敏捷開發是快速交付迭代可用的系統,省略多余的設計方案,摒棄傳統的審批流程,但核心關鍵點上的必要設計和文檔沉淀是需要的。
寫在最后
我們相信技術之心生生不息,也相信好的規約值得被傳播和應用。本次新增的不單是16條新的設計規約,還是阿里技術人的情懷與追求。我們也期待大家的意見,持續完善《阿里巴巴Java開發手冊》。
每天一篇技術文章,
看不過癮?
關注“阿里巴巴機器智能”公眾號
發現更多AI干貨。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的如何提升代码可读性?阿里发布16条设计规约的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 想换工作?阿里技术战略部招人啦!
- 下一篇: 嘘!阿里程序媛上班的第一件事是...