日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何管理和優(yōu)化日益增長(zhǎng)的代碼復(fù)雜度?

隨著時(shí)間的推移,軟件項(xiàng)目會(huì)變得越來越大,項(xiàng)目中組件之間的依賴關(guān)系也會(huì)變得越來越錯(cuò)綜復(fù)雜,項(xiàng)目的維護(hù)也會(huì)變得越來越困難。

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),隴南企業(yè)網(wǎng)站建設(shè),隴南品牌網(wǎng)站建設(shè),網(wǎng)站定制,隴南網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,隴南網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

Plumbr(Java內(nèi)存泄露檢測(cè)器)開發(fā)團(tuán)隊(duì)的一篇博文揭示他們這個(gè)項(xiàng)目在開發(fā)過程中,其代碼復(fù)雜性是如何演變的。

本文中的這些代碼依賴圖是該團(tuán)隊(duì)在項(xiàng)目開發(fā)過程中使用Structure 101來 生成的。通過Structure,開發(fā)者可以定義一個(gè)規(guī)則來約束代碼之間的交互和依賴關(guān)系,從而簡(jiǎn)化開發(fā)和重構(gòu)過程中的代碼復(fù)雜度管理。但在Plumbr 項(xiàng)目一開始,并沒有使用Structure,只使用了其中的Restructure產(chǎn)品來可視化項(xiàng)目中的依賴。但在后面項(xiàng)目越做越大時(shí),團(tuán)隊(duì)才開始考慮使 用Structure。

Restructure使用如下兩個(gè)指標(biāo)來表示代碼的質(zhì)量:

  • Tangle(混亂度):用來表示代碼構(gòu)件(比如包、類)之間的關(guān)系是否錯(cuò)綜復(fù)雜
  • Fat(肥胖度):用于表示單獨(dú)的類、包是否龐大且雜亂

嚴(yán)格來說,并不是Tangle和Fat數(shù)值小就意味著你的代碼庫(kù)比較好。但是這兩個(gè)指標(biāo)確實(shí)能為你的代碼優(yōu)化工作帶來一些幫助,比如規(guī)模較小的單個(gè)代碼片 (Fat數(shù)值?。└菀鬃屓死斫猓蕾囮P(guān)系少(Tangle數(shù)值?。┑拇a更具可預(yù)測(cè)性,這樣的代碼中的bug就會(huì)更少,代碼也更容易維護(hù)。

下面就來看看Plumbr項(xiàng)目代碼的復(fù)雜性的演變。

故事始于2011年初,那時(shí)剛開始創(chuàng)建代碼庫(kù)。從下面的截圖中可以看到,代碼的Tangle數(shù)非常低(圖左上角色譜中的小黑點(diǎn)),可以說這為將來的開發(fā)工作打下了一個(gè)堅(jiān)實(shí)的基礎(chǔ)。但實(shí)際情況是,項(xiàng)目團(tuán)隊(duì)僅僅只寫了幾千行源代碼,還沒來得及寫更多東西。

但是只過了6個(gè)月,就呈現(xiàn)出了不同的畫面。如下圖所示,F(xiàn)at數(shù)依然很低,但是依賴關(guān)系已經(jīng)開始變得混亂(看小黑點(diǎn)的縱坐標(biāo)軸)。

又過了6個(gè)月,可以看到項(xiàng)目代碼Fat數(shù)依然很低,Tangle數(shù)依然很高。但是你可以看到一些包(allocation、io、lifecycle)現(xiàn)在已經(jīng)從混亂的代碼庫(kù)中獨(dú)立了出來。其實(shí),該團(tuán)隊(duì)在這個(gè)時(shí)期的后段使用了Structure 101來管理代碼。

又過了半年時(shí)間,事情似乎走向了極端?,F(xiàn)在除了依賴關(guān)系異?;靵y外,代碼的Fat情況也相當(dāng)嚴(yán)重。這時(shí)項(xiàng)目團(tuán)隊(duì)開始全面使用Structure 101產(chǎn)品來分析下面這張圖片,并問自己一些有實(shí)際意義的問題,比如:

  • 為什么report代碼要依賴一個(gè)引用包?
  • 為什么在文件系統(tǒng)工具和日志包之間有這么一個(gè)強(qiáng)周期性依賴?

當(dāng)然,即使沒有Structure 101這個(gè)工具,也應(yīng)該問自己一些類似的問題。但不可否認(rèn),該工具對(duì)問題進(jìn)行了可視化,對(duì)于優(yōu)化代碼有很大的幫助。

#p#

發(fā)現(xiàn)問題后,項(xiàng)目團(tuán)隊(duì)就開始采取措施進(jìn)行優(yōu)化。下面這張圖片大約是半年前的,可以看到,所有添加的新代碼已經(jīng)變得整潔,比如同級(jí)組件(fs、http等)之間的依賴關(guān)系現(xiàn)在已經(jīng)得到了改善。

下面這張圖片是一周前的。雖然代碼庫(kù)比半年前增長(zhǎng)了25%,但是Tangle數(shù)已經(jīng)成功地從39,000減少到了16,000,代碼變得更加整潔、結(jié)構(gòu)更加自然了。另外,項(xiàng)目團(tuán)隊(duì)的開發(fā)水平也有了一定的提高。

結(jié)論

項(xiàng)目代碼復(fù)雜性的管理要貫穿項(xiàng)目始終,這樣到項(xiàng)目后期,維護(hù)起來也不會(huì)特別困難?;蛘吣憧梢灾贫ㄒ恍┮蕾囈?guī)則,然后在開發(fā)過程中強(qiáng)制執(zhí)行。

這個(gè)故事是一個(gè)很好的樣本,展示了一個(gè)小團(tuán)隊(duì)如何在一個(gè)相對(duì)短的時(shí)間內(nèi)創(chuàng)建一個(gè)混亂的代碼庫(kù)。你也可以設(shè)想一下,如果一個(gè)10人開發(fā)團(tuán)隊(duì)開發(fā)一個(gè)預(yù)期壽命為10年的項(xiàng)目,最終的項(xiàng)目依賴關(guān)系圖會(huì)是什么樣的呢?


當(dāng)前文章:如何管理和優(yōu)化日益增長(zhǎng)的代碼復(fù)雜度?
文章地址:http://www.5511xx.com/article/cdiosho.html