2011-09-09 242 views
0

我最近開始學習測試驅動的開發,但我總是看到自己改變我的課程的設計,以便更高級別的課程可以訪問更多的屬性。 (更改設計後,我的測試用例也必須重寫)面向對象的設計

例如,我通過編寫MineSweeper程序來練習此操作。 MineFieldImp類具有寬度和高度屬性,但我沒有在我之前創建的MineField接口中公開這個。但後來我發現我需要這個功能,因此添加這些屬性需要我爲這個類以及它實現的接口添加公共方法。

我經常看到自己給以前沒有想到的類添加方法或字段。 我在做什麼錯?我應該怎麼做才能改進?

感謝, 楊

+0

你做得對。與其他許多其他開發人員一樣,我在設計紙質或建模工具方面有很多年了,在開始編寫代碼之前,有時候我還添加了我沒有計劃的方法和屬性;-) – umlcat

回答

2

你沒有做錯什麼。課堂設計是一個不斷髮展的過程,其不斷變化。這就是TDD和單元測試的美妙之處。隨着您的設計更改,您有單元測試,以確保您的重新分解沒有破壞任何東西。

我強烈建議讀Fowler's Refactoring這本書,裏面有很多很棒的信息,包括許多有用的重構模式和指導如何重構。它肯定會幫助您提高生產力,並幫助您生成更好的面向對象的設計。

+1

(+)我會替換「有機「單詞爲」evolutive「單詞,;-) – umlcat

+0

同意,這是一個更好的詞。我更新了我的帖子。 – bittersweetryan