模式與XP

husthxd發表於2005-03-23

Joshua Kerievsky著,

部分摘錄.


1.模式和極端程式設計(XP)都為軟體設計、開發者提供了無法用金錢衡量的幫助。但是迄今為止XP大量關注於重構(refactoring),而對模式隻字不提。在這篇文章中,我問''為什麼'',並且最終描述出模式怎樣以XP的方式更好地實現、以及XP怎樣因為包含對模式的使用而變得更好.

2.仍在所知不多的時候我們就開始了自己的程式設計生涯,生產出的軟體也反映出了我們的缺乏經驗:我們建立的程式碼臃腫、錯誤百出、脆弱、難以維護、難以擴充套件。隨著時間的流逝,我們成為了更好的軟體設計者:我們從技術作家、專家那裡學習,我們從自己的錯誤中學習。現在我們編寫具有高度靈活性的軟體,它適應廣泛而且堅固。當被請求編寫一個新的系統時,我們知道查明當前和將來的需求,這樣我們可以設計軟體來處理當前和將來的需要。


在軟體開發生涯的這個階段,極端程式設計告訴我們,我們經常對軟體過分設計(over-engineer)了。我們從自己的錯誤中學到了太多,我們不希望重複這些錯誤,所以我們在系統生命週期的早期做了大量的努力來創造靈活而堅固的設計。不幸的是,我們沒有認識到:如果這個系統永遠不需要這個程度的靈活性和堅固性,那麼我們所有的工作就都沒有意義了。我們過分設計了。


我也曾經過分設計過。說實話,與其他設計者坐在一間房間裡考慮如何設計軟體來適應許多當前和將來的需求,這的確是一種樂趣。我們把自己學到的所有東西 --- --- 尤其是那些最好的經驗 --- --- 應用在設計中。我們常常知道需求的列表會改變,但使用者或客戶總是改變需求。不過,我們認為我們可以足夠聰明地設計軟體,使軟體足夠靈活,使它能應付所有的需求變化。


典型的過分設計。


今天,極端程式設計將告訴你這是多麼愚蠢的做法。XP說,我們必須讓設計自己顯現出來,而不是去預測設計將是什麼樣子。XP說,''做可能起作用的最簡單的事'',因為''你將不再需要它''。另外,Kent Beck說:


你需要在一個強調溝通、簡單、反饋和勇氣的價值系統中選擇最好的工作方法,這樣你才能勇敢的脫離過分設計。[Beck1 00]

3.模式的實現有簡單的也有複雜的。訣竅是:發現模式針對的問題,將這個問題與你當前的問題進行比較,然後將這個模式最簡單的實現(解決方案)與你的問題進行比較。當你這樣做時,你就不會在可以使用小規模解決方案的時候使用大規模解決方案。你獲得瞭解決問題最好的平衡。

4.這就是我們需要的觀點:重構的目標。這就是重構和模式之間的橋樑。它完美的描述了我自己在如何使用模式方面的進步:從簡單開始,考慮模式但將它們保持在次要地位,小規模重構,只有在真正需要模式的時候才把重構轉移為模式

5.當程式設計師需要做出設計決策時,很重要的一件事就是:他們應該試圖保持設計簡單,因為簡單的設計通常比龐大而複雜的設計更容易維護和擴充套件。我們已經知道,重構意味著將我們保持在簡單的路上:它鼓勵我們以小而簡單步驟逐漸改進我們的設計,並避免過分設計。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6906/viewspace-21736/,如需轉載,請註明出處,否則將追究法律責任。

相關文章