2009-05-21 64 views
12

我開始一個全新的項目 - 我應該看看自己的規範,決定應用哪種設計模式,或者只是想出一個組織的總體思路,並通過重構讓模式有機地出現?什麼應該首先 - 設計模式或代碼?

根據您的經驗,哪種技術的效率最高,並且更有可能導致清晰優雅的代碼?

我也想知道是否有設計模式沒有由GoF定義,但可能同樣有價值?如果是這樣,有什麼有用的資源來告訴我自己這些?

回答

18

你應該有機地發展你的代碼,適應模式。過早地與模式匹配可能會導致大量不適當的代碼以及很多抽象層,導致設計變得模糊。見證你所看到的任何代碼是在某人第一次發現模式之後編寫的;-)

3
  1. 找出用例。
  2. 從整個現有設計模式考慮設計。
  3. 開始執行。

我相信這裏的主要目標是避免重新發明車輪。

PS。在你將步驟2經過幾次並習慣之後,你將能夠將該步驟整合到步驟3中。

6

除非模式似乎明顯跳出規範,否則我不一定會嘗試從GoF挑選一些東西,然後錘擊問題,直到符合模式。

最好從概念上理解你頭腦中不同的抽象層次,並提出一個計劃(不一定是流行的設計模式)來實現它。這是你會在經驗上更好的東西。雖然瞭解GoF模式將幫助您提高思考代碼設計方面的問題的能力,但這並不意味着解決所有問題,並且人爲地強制您的問題適合設計模式可能意味着不必要的複雜和混淆。

0

在開始編碼之前,您應該掌握哪些模式適合該問題。如果沒有,請製作原型,以便了解您想要實現的目標。然後尋找模式並丟棄原型(的結構)(並重用好位)。

2

如果我不確定我剛開始寫代碼。在太久之前,結構會開始乞求重構,選擇幾乎總是很明顯。

雖然我有時受某種特定模式的啓發,但它幾乎總是能夠讓我看到正確的路徑。

我也不怕燃燒和重建程序的某些部分。我很喜歡斯科特亞當斯的一句話 - 「創造力讓自己犯錯,藝術知道要保留哪些。」有時候,正確的答案是不明顯的,直到你嘗試錯誤的方式。

0

好的建議已經在這裏。回答有關除GoF書籍以外的有用模式的問題。有,你應該檢查Larman的應用UML和模式,他描述了GRASP模式。

1

你應該有機地發展你的代碼,適應模式。

借調!我見過的一些最糟糕的意大利麪是OO C++,有很多模式。 Fluxbox幾乎無法忍受;協同(V2)燒開,broils和烤給我的麪條:(

和一些最美麗的代碼中,我所看到的是面向對象的C,其中OO分別爲兩個接口和4個和20個實現。

相關問題