2011-09-09 136 views
0

我最近开始学习测试驱动的开发,但我总是看到自己改变我的课程的设计,以便更高级别的课程可以访问更多的属性。 (更改设计后,我的测试用例也必须重写)面向对象的设计

例如,我通过编写MineSweeper程序来练习此操作。 MineFieldImp类具有宽度和高度属性,但我没有在我之前创建的MineField接口中公开这个。但后来我发现我需要这个功能,因此添加这些属性需要我为这个类以及它实现的接口添加公共方法。

我经常看到自己给以前没有想到的类添加方法或字段。 我在做什么错?我应该怎么做才能改进?

感谢, 杨

+0

你做得对。与其他许多其他开发人员一样,我在设计纸质或建模工具方面有很多年了,在开始编写代码之前,有时候我还添加了我没有计划的方法和属性;-) – umlcat

回答

2

你没有做错什么。课堂设计是一个不断发展的过程,其不断变化。这就是TDD和单元测试的美妙之处。随着您的设计更改,您有单元测试,以确保您的重新分解没有破坏任何东西。

我强烈建议读Fowler's Refactoring这本书,里面有很多很棒的信息,包括许多有用的重构模式和指导如何重构。它肯定会帮助您提高生产力,并帮助您生成更好的面向对象的设计。

+1

(+)我会替换“有机“单词为”evolutive“单词,;-) – umlcat

+0

同意,这是一个更好的词。我更新了我的帖子。 – bittersweetryan