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