2008-09-23 155 views

回答

7

我認爲這個問題可以改寫,因此使得這些話更有意義:

「哪個架構模式和策略使用測試驅動和增量開發策略時,都是爲了實現靈活性有用?」

我的答案是:模式,幫助你解耦clases和部件,如:

  • Inversion of Control and Dependency Injection - 幫助你保持你的類和從特定的實現分離組件之間的依賴關係都解決了,直到運行時(或啓動時間)允許使用存根尚未實現的功能和單元測試。

  • Facades - 幫助您隔離組件,爲它們之間的交互提供良好定義的接口,減少耦合。

  • 工廠和其他creational patterns - 它們讓您在負責實例化對象的代碼部分具有靈活性。

另外請記住,遞增和迭代開發的咒語之一是'Do the simplest thing that could possibly work'。不要過度設計。

根據你提問的內容是否合理?

-3

使用像Python或Ruby這樣的動態語言進行開發:您不必與許多其他語言遇到的「設計模式」首先出現的問題作鬥爭。

動態語言與自動化測試相結合將使結果非常快速,因此您知道要採取哪個方向。如果您意識到應該使用靜態語言來提高性能,或者您可以轉換您已經構建的動態軟件。

2

我不確定這是一個有意義的問題。但我不會讓我阻止......

特定模式很可能會變得很明顯,因爲它適用於您的應用程序設計的各個方面,因爲它會在您選擇的敏捷過程中發展,但有可能不會錯誤 - )報價Ron Jeffries,「代碼會告訴你」。

編輯:但如果你想要一個明確的答案,然後橋。這是一個很好的。或者訪問者,我也喜歡那個。或者以「F」開頭的大多數。 :)

+0

我認爲迭代器模式對迭代開發很有用 – 2008-09-23 08:46:14

+0

謝謝,也會檢查出來。 – user20358 2008-09-23 11:00:26

-1

設計模式是幫助解決特定類型問題的工具。模式的使用受需求範圍定義的問題的控制,而不是由開發方法論所決定。

+1

我不同意。如果測試驅動開發是您的方法的一部分,那麼您可以將「能夠進行單元測試」視爲暗示要求使用特定模式(如DI或IOC)的要求。 – 2008-10-17 09:36:15

4

不要混合不同的東西。您可以在適用時使用模式,並節省您的時間,精力,並使您的代碼看起來更加標準。 它與您的開發方法無關!

但是,您可能想強調在應用程序的架構有些事情:

  • 讓事情非常模塊化。擁抱鬆耦合。
  • 定義清除模塊之間的概念性邊界。從概念上來說,我的意思是說一開始應該很清楚,感覺很自然。一位隨機程序員問到它應該回答:「哇,這很明顯你是怎麼做到的!」。
  • 從小開始。不要試圖製作出ZOMG這個將成爲最佳和最普遍的類庫和程序等等。使事情發揮作用,然後擴展,但只在必要的時候。
  • 說服自己YAGNI(你不需要它)。不要做你不確定你必須做的事情。這並不意味着拖延或什麼。這意味着不要做這樣的事情,因爲「我不知道,它可能對未來有用」,「它在技術上是幻想的」,「我會將其納入以防萬一」。
  • 幹 - 不要重複自己。確保您不會遇到代碼重複問題。考慮代碼生成器,良好的抽象以及整個團隊的有效溝通。