Posted on 2005-12-28 23:11
canonical 閱讀(1552)
評論(3) 編輯 收藏 所屬分類:
設計理論
Agile批評過度設計(over-engineering)的聲音很大,但對于設計不足(under-engineering)同樣是持堅決的否定態度
的。修改過度設計的應用比修改設計不足的程序要容易的多。因為簡化的途徑是明確的,而走向復雜的途徑卻往往是難以控制的。Refactoring To
Patterns試圖引入一些經驗,但這些可預見的調整多半只在細節處,其影響是局部的。一個復雜性低層次的設計要支持一個復雜性高的應用,所需的代碼量
不是線性的堆砌,而是幾何級數式的增長,重構的時候需要做出的改變往往也是影響全局的。而事實上,設計不足是比過度設計更加常見的情況。真實的情況也許
是,在真正需要我們做出創造性設計的地方我們因為無知和無能而設計不足,而在那些渴求簡單的地方,我們卻自詡為先知而加上很多華麗的設計來維護虛幻的可擴
展性。這里的度是很難把握的。高段位的棋手可以比低段位的棋手預見到更多的步數,而一個優秀的軟件架構師也需要比普通的程序員更早的預見到系統發展的障
礙。在我們明確可預見的范圍內,當然是要把所有的設計做好,而在我們思維的邊界處,"行"就變得比"思"重要了。
大談"over-engineering"的主多半都有著豐富的過度設計的經驗,千萬不要把他們回顧時的話語當成是普遍的真理。所謂大巧若拙,精煉的小詩
可比長篇大論難寫的多了。有時采用一種簡單的處理方式,是因為我們感覺到它不會成為障礙,雖然此時并沒有明確的設計過程。你必須有能力進行過度設計,才能
真正理解簡單設計的精妙之處