Posted on 2005-12-28 23:11
canonical 閱讀(1552)
評(píng)論(3) 編輯 收藏 所屬分類:
設(shè)計(jì)理論
Agile批評(píng)過(guò)度設(shè)計(jì)(over-engineering)的聲音很大,但對(duì)于設(shè)計(jì)不足(under-engineering)同樣是持堅(jiān)決的否定態(tài)度
的。修改過(guò)度設(shè)計(jì)的應(yīng)用比修改設(shè)計(jì)不足的程序要容易的多。因?yàn)楹?jiǎn)化的途徑是明確的,而走向復(fù)雜的途徑卻往往是難以控制的。Refactoring To
Patterns試圖引入一些經(jīng)驗(yàn),但這些可預(yù)見(jiàn)的調(diào)整多半只在細(xì)節(jié)處,其影響是局部的。一個(gè)復(fù)雜性低層次的設(shè)計(jì)要支持一個(gè)復(fù)雜性高的應(yīng)用,所需的代碼量
不是線性的堆砌,而是幾何級(jí)數(shù)式的增長(zhǎng),重構(gòu)的時(shí)候需要做出的改變往往也是影響全局的。而事實(shí)上,設(shè)計(jì)不足是比過(guò)度設(shè)計(jì)更加常見(jiàn)的情況。真實(shí)的情況也許
是,在真正需要我們做出創(chuàng)造性設(shè)計(jì)的地方我們因?yàn)闊o(wú)知和無(wú)能而設(shè)計(jì)不足,而在那些渴求簡(jiǎn)單的地方,我們卻自詡為先知而加上很多華麗的設(shè)計(jì)來(lái)維護(hù)虛幻的可擴(kuò)
展性。這里的度是很難把握的。高段位的棋手可以比低段位的棋手預(yù)見(jiàn)到更多的步數(shù),而一個(gè)優(yōu)秀的軟件架構(gòu)師也需要比普通的程序員更早的預(yù)見(jiàn)到系統(tǒng)發(fā)展的障
礙。在我們明確可預(yù)見(jiàn)的范圍內(nèi),當(dāng)然是要把所有的設(shè)計(jì)做好,而在我們思維的邊界處,"行"就變得比"思"重要了。
大談"over-engineering"的主多半都有著豐富的過(guò)度設(shè)計(jì)的經(jīng)驗(yàn),千萬(wàn)不要把他們回顧時(shí)的話語(yǔ)當(dāng)成是普遍的真理。所謂大巧若拙,精煉的小詩(shī)
可比長(zhǎng)篇大論難寫的多了。有時(shí)采用一種簡(jiǎn)單的處理方式,是因?yàn)槲覀兏杏X(jué)到它不會(huì)成為障礙,雖然此時(shí)并沒(méi)有明確的設(shè)計(jì)過(guò)程。你必須有能力進(jìn)行過(guò)度設(shè)計(jì),才能
真正理解簡(jiǎn)單設(shè)計(jì)的精妙之處
Feedback
# re: [導(dǎo)入]過(guò)度設(shè)計(jì)與設(shè)計(jì)不足 回復(fù) 更多評(píng)論
2005-12-29 09:15 by
很同意上述觀點(diǎn),那些大師們的很多設(shè)計(jì)都有其精妙之處,但不可避免的都有其不足之處,他們對(duì)自己經(jīng)驗(yàn)的總結(jié),并不一定就適合他人,設(shè)計(jì)不是單靠模仿就能學(xué)得來(lái)的,這就是所謂的讀萬(wàn)卷書不如行千里路,但經(jīng)驗(yàn)的積累又不是一蹴而就的,不但需要知識(shí)的沉積,還需要長(zhǎng)久經(jīng)驗(yàn)的總結(jié)升華,設(shè)計(jì)就象寫文章,不可能一下子就長(zhǎng)篇大論,但如果沒(méi)有長(zhǎng)篇大論的階段,寫出的文章很難短小精悍。
# re: [導(dǎo)入]過(guò)度設(shè)計(jì)與設(shè)計(jì)不足 回復(fù) 更多評(píng)論
2005-12-29 11:30 by
看了樓主的一系列文章,感覺(jué)樓主的知識(shí)面很廣。
總是能站在一個(gè)相當(dāng)?shù)母叨壬峡创龁?wèn)題。
長(zhǎng)期關(guān)注你的文章!
# re: [導(dǎo)入]過(guò)度設(shè)計(jì)與設(shè)計(jì)不足 回復(fù) 更多評(píng)論
2006-02-24 13:47 by
文中所含思想, 很值得我們反思: 在閱讀一些所謂的名家名作時(shí), 應(yīng)該抱著怎么的一種辯證觀點(diǎn)去思考和采納.