《阿里巴巴JAVA开发手册》发布详尽版,新增16条设计规约
2018年6月5日,《阿里巴巴Java開發(fā)手冊(cè)》再次升級(jí)代碼規(guī)范,新增了16條設(shè)計(jì)規(guī)約!
《阿里巴巴Java開發(fā)手冊(cè)》是阿里內(nèi)部Java工程師所遵循的開發(fā)規(guī)范,涵蓋編程規(guī)約、單元測(cè)試規(guī)約、異常日志規(guī)約、MySQL規(guī)約、工程規(guī)約、安全規(guī)約等,這是近萬名阿里Java技術(shù)精英的經(jīng)驗(yàn)總結(jié)。
規(guī)范下載鏈接:https://102.alibaba.com/downloadFile.do?file=1528185610558/JAVA1.4.pdf
為何要新增設(shè)計(jì)規(guī)約?
膾炙人口的唐詩(shī)“兩個(gè)黃鸝鳴翠柳,一行白鷺上青天”,清爽直接,簡(jiǎn)明易懂。可讀性好的代碼也是讓人陶醉的,那么如何寫出可讀性的代碼?
代碼的可讀性是指代碼讓人容易閱讀、理解、調(diào)試、可預(yù)料的程度。提高代碼的可讀性可以為代碼閱讀者節(jié)約時(shí)間和精力,提升團(tuán)隊(duì)協(xié)作效率。熟悉和遵守《阿里巴巴JAVA開發(fā)手冊(cè)》的編程風(fēng)格,那只是“標(biāo)”,而代碼可讀性的“本”可以追溯到軟件設(shè)計(jì)階段。試想一下如果發(fā)型師沒有設(shè)計(jì)好,不用指望能剪出一個(gè)“可讀性”比較好的你。
設(shè)計(jì)是一種夢(mèng)想和追求,誰都喜歡有氣質(zhì)的女神,誰都會(huì)欣賞有設(shè)計(jì)感的代碼。你可能會(huì)問,什么是設(shè)計(jì)感?就像燒飯這件事,村姑和御廚都會(huì)燒,都能吃飽,但是菜品的美感、口感,有本質(zhì)的區(qū)別。代碼到藝術(shù)層面上,能夠體現(xiàn)出來非常好的擴(kuò)展性、解耦性。代碼就象積木一樣,換一個(gè)搭法,也是OK的,結(jié)構(gòu)清晰,不用擔(dān)心拔出蘿卜帶出泥。
何為16條?
設(shè)計(jì)規(guī)約是根據(jù)阿里巴巴實(shí)際項(xiàng)目架構(gòu)經(jīng)驗(yàn)提煉而成,共16條。設(shè)計(jì)規(guī)約主要從UML圖和架構(gòu)設(shè)計(jì)原則來規(guī)定比較基礎(chǔ)的軟件設(shè)計(jì)理念,并且明確了超過什么樣的閾值需要以什么樣的方式來呈現(xiàn)設(shè)計(jì)思維。根據(jù)阿里巴巴內(nèi)部的反饋聲音來看,對(duì)于數(shù)據(jù)底層結(jié)構(gòu)、狀態(tài)圖、以及敏捷開發(fā)相關(guān)的三條,共鳴感最強(qiáng),那么詳細(xì)點(diǎn)評(píng)一下:
數(shù)據(jù)底層結(jié)構(gòu)
底層數(shù)據(jù)結(jié)構(gòu)屬于大廈的地基工程,如果地基不穩(wěn),那么上層去修正難度是相當(dāng)大的,甚至是無法修正。所以設(shè)計(jì)規(guī)約提倡,存儲(chǔ)方案和底層數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)獲得評(píng)審一致通過,并沉淀成為文檔。有缺陷的底層數(shù)據(jù)結(jié)構(gòu)容易導(dǎo)致系統(tǒng)風(fēng)險(xiǎn)高,可擴(kuò)展性差,重構(gòu)成本因歷史數(shù)據(jù)遷移、系統(tǒng)平滑過渡也會(huì)陡然增加,所以,存儲(chǔ)方案和數(shù)據(jù)結(jié)構(gòu)需要認(rèn)真地進(jìn)行設(shè)計(jì)和評(píng)審,生產(chǎn)環(huán)境提交執(zhí)行后,需要進(jìn)行double check。評(píng)審內(nèi)容包括存儲(chǔ)介質(zhì)選型、表結(jié)構(gòu)設(shè)計(jì)能否滿足技術(shù)方案、存取性能和存儲(chǔ)空間能否滿足業(yè)務(wù)發(fā)展、表或字段之間的辯證關(guān)系、字段名稱、字段類型、索引等;數(shù)據(jù)結(jié)構(gòu)變更(如在原有表中新增字段)也需要進(jìn)行評(píng)審?fù)ㄟ^后上線。
狀態(tài)圖
業(yè)務(wù)對(duì)象狀態(tài)相關(guān)的編碼錯(cuò)誤是引起線上故障的一個(gè)重要導(dǎo)火索。多一個(gè)狀態(tài),少一個(gè)狀態(tài),如果沒有歷史設(shè)計(jì)文檔沉淀,那么都是災(zāi)難性的。如果某個(gè)業(yè)務(wù)對(duì)象的狀態(tài)超過3個(gè),使用狀態(tài)圖來表達(dá)并且明確狀態(tài)變化的各個(gè)觸發(fā)條件。狀態(tài)圖的核心是對(duì)象狀態(tài),首先明確對(duì)象有多少種狀態(tài),然后明確兩兩狀態(tài)之間是否存在直接轉(zhuǎn)換關(guān)系,再明確觸發(fā)狀態(tài)轉(zhuǎn)換的條件是什么。淘寶訂單狀態(tài)有已下單、待付款、已付款、待發(fā)貨、已發(fā)貨、已收貨等。比如已下單與已收貨這兩種狀態(tài)之間是不可能有直接轉(zhuǎn)換關(guān)系的。
敏捷開發(fā)
敏捷開發(fā)是當(dāng)下流行的一種開發(fā)模式,相比傳統(tǒng)軟件生產(chǎn)流程,更加快速地交付。但是,敏捷開發(fā)適合于信任度好、理解力強(qiáng)、技術(shù)水平相對(duì)一致的創(chuàng)業(yè)型團(tuán)隊(duì)。但是在很多公司敏捷成為一個(gè)抓進(jìn)度的拔苗助長(zhǎng)式的借口。所以避免如下誤解:敏捷開發(fā) = 講故事 + 編碼 + 發(fā)布。敏捷開發(fā)是快速交付迭代可用的系統(tǒng),省略多余的設(shè)計(jì)方案,摒棄傳統(tǒng)的審批流程,但核心關(guān)鍵點(diǎn)上的必要設(shè)計(jì)和文檔沉淀是需要的。
寫在最后
《阿里巴巴Java開發(fā)手冊(cè)》的使命,在于幫助工程師脫離繁瑣,重燃技術(shù)激情。業(yè)務(wù)會(huì)變、玩法會(huì)變、需求會(huì)變,做好代碼質(zhì)量的決心永不會(huì)變。
不斷打磨技術(shù),成為更好的自己,我們共勉。
總結(jié)
以上是生活随笔為你收集整理的《阿里巴巴JAVA开发手册》发布详尽版,新增16条设计规约的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移动开发新利器 | 一文深入了解 Flu
- 下一篇: 阿里Java高考卷来了,你能得几分?