什么是軟件開發(fā)中的過(guò)度設(shè)計(jì)?

2016-09-06    分類: 軟件開發(fā)

簡(jiǎn)單來(lái)說(shuō),過(guò)度設(shè)計(jì)就是進(jìn)行了過(guò)多的面向未來(lái)的設(shè)計(jì),進(jìn)行了不必要的抽象封裝,為系統(tǒng)增加了不必要的復(fù)雜度。舉個(gè)例子,你要做一個(gè)功能模塊,但你考慮到到這個(gè)系統(tǒng)里還有幾個(gè)未完成的模塊和你要做的東西類似,所以你決定為此額外做一些抽象和封裝,以便將來(lái)復(fù)用。然而到后來(lái)你開發(fā)那些相似的模塊時(shí)你才發(fā)現(xiàn),可能是由于抽象不足或抽象錯(cuò)誤,你不得不重新修改之前的封裝才能完成復(fù)用,導(dǎo)致最終成本實(shí)際上還不如不做;或者你發(fā)現(xiàn)復(fù)用的部分所降低的成本實(shí)際上還不如包裝花費(fèi)的成本。 這些都是最常見的過(guò)度設(shè)計(jì)的例子。 程序員在掌握了一些基本的設(shè)計(jì)能力之后,最常見也是最難克服的設(shè)計(jì)問(wèn)題往往就是過(guò)度設(shè)計(jì)。上面的錯(cuò)誤我相信大多數(shù)人都一而再,再而三的的犯過(guò)。

與過(guò)度設(shè)計(jì)相對(duì)的就是設(shè)計(jì)不足。雖然是兩個(gè)相對(duì)的概念,但設(shè)計(jì)不足和過(guò)度設(shè)計(jì)絕大多數(shù)時(shí)候都是一起出現(xiàn)的。都是最常見的設(shè)計(jì)問(wèn)題。設(shè)計(jì)不足不僅常見于新手,老手也常犯。甚至我還見過(guò)有一類老程序員在經(jīng)歷過(guò)多次過(guò)度設(shè)計(jì)的打擊之后,轉(zhuǎn)向另一個(gè)極端,否定抽象封裝的作用,走上“反設(shè)計(jì)”的道路。

過(guò)度設(shè)計(jì)和設(shè)計(jì)不足的平衡問(wèn)題沒(méi)有很好的解決辦法,只有依靠經(jīng)驗(yàn)的積累和不斷的總結(jié)思考。如何把握這個(gè)度是最能考驗(yàn)程序員的經(jīng)驗(yàn)和價(jià)值的問(wèn)題之一。

我所嘗試過(guò)的軟件方法中,有一種方法的思維方式對(duì)于解決這個(gè)問(wèn)題幫助大,就是TDD(測(cè)試驅(qū)動(dòng)開發(fā)),這里簡(jiǎn)單說(shuō)下為什么TDD能解決這個(gè)問(wèn)題:TDD的一個(gè)核心思想是小步增量,不斷重構(gòu)。具體說(shuō)來(lái)就是TDD有兩個(gè)狀態(tài)(常見的說(shuō)法是兩頂帽子):狀態(tài)A:用test case描繪需求,并使用最簡(jiǎn)單的方式滿足這個(gè)test case。注意要用最簡(jiǎn)單的方式滿足這個(gè)需求,不能為任何test case之外的需求做任何設(shè)計(jì)。 test case通過(guò)之后進(jìn)入狀態(tài)B;狀態(tài)B:重構(gòu)代碼,讓現(xiàn)有的代碼在盡量保持簡(jiǎn)單性的同時(shí)足夠優(yōu)雅清晰。注意此時(shí)你只能對(duì)現(xiàn)有的實(shí)現(xiàn)代碼進(jìn)行重構(gòu),不能增加任何新的功能和test case。整個(gè)TDD的過(guò)程就是在這兩個(gè)狀態(tài)間不斷轉(zhuǎn)換的過(guò)程。在狀態(tài)A增加功能,在狀態(tài)B優(yōu)化設(shè)計(jì)。

TDD的這種思維方式走的稍微極端一點(diǎn)。它直接排斥任何對(duì)未來(lái)的設(shè)計(jì),轉(zhuǎn)而以優(yōu)雅簡(jiǎn)潔的設(shè)計(jì)和test case來(lái)為未來(lái)需求的重構(gòu)降低成本。 可以說(shuō)嚴(yán)格遵循TDD做出來(lái)的設(shè)計(jì)必然在過(guò)度設(shè)計(jì)和設(shè)計(jì)不足方面都不會(huì)有太大的問(wèn)題。

我嚴(yán)重推薦TDD。不管你最終會(huì)不會(huì)接受TDD這種開發(fā)方式,它獨(dú)特的思維方式都必然會(huì)給你的設(shè)計(jì)觀念帶來(lái)很大影響。

文章名稱:什么是軟件開發(fā)中的過(guò)度設(shè)計(jì)?
本文路徑:http://www.bm7419.com/news19/43569.html

網(wǎng)站建設(shè)、網(wǎng)絡(luò)推廣公司-創(chuàng)新互聯(lián),是專注品牌與效果的網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷seo公司;服務(wù)項(xiàng)目有網(wǎng)站設(shè)計(jì)、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)