2016-09-06 分類(lèi): 軟件開(kāi)發(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)似,所以你決定為此額外做一些抽象和封裝,以便將來(lái)復(fù)用。然而到后來(lái)你開(kāi)發(fā)那些相似的模塊時(shí)你才發(fā)現(xiàn),可能是由于抽象不足或抽象錯(cuò)誤,你不得不重新修改之前的封裝才能完成復(fù)用,導(dǎo)致最終成本實(shí)際上還不如不做;或者你發(fā)現(xiàn)復(fù)用的部分所降低的成本實(shí)際上還不如包裝花費(fèi)的成本。 這些都是最常見(jiàn)的過(guò)度設(shè)計(jì)的例子。 程序員在掌握了一些基本的設(shè)計(jì)能力之后,最常見(jiàn)也是最難克服的設(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)的。都是最常見(jiàn)的設(shè)計(jì)問(wèn)題。設(shè)計(jì)不足不僅常見(jiàn)于新手,老手也常犯。甚至我還見(jiàn)過(guò)有一類(lèi)老程序員在經(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)開(kāi)發(fā)),這里簡(jiǎn)單說(shuō)下為什么TDD能解決這個(gè)問(wèn)題:TDD的一個(gè)核心思想是小步增量,不斷重構(gòu)。具體說(shuō)來(lái)就是TDD有兩個(gè)狀態(tài)(常見(jiàn)的說(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)而以?xú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這種開(kāi)發(fā)方式,它獨(dú)特的思維方式都必然會(huì)給你的設(shè)計(jì)觀念帶來(lái)很大影響。
文章名稱(chēng):什么是軟件開(kāi)發(fā)中的過(guò)度設(shè)計(jì)?
本文路徑:http://redsoil1982.com.cn/news19/43569.html
網(wǎng)站建設(shè)、網(wǎng)絡(luò)推廣公司-創(chuàng)新互聯(lián),是專(zhuān)注品牌與效果的網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷(xiāo)seo公司;服務(wù)項(xiàng)目有網(wǎng)站設(shè)計(jì)、軟件開(kāi)發(fā)等
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(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)
猜你還喜歡下面的內(nèi)容