快速设计问题。
ClassA 有一个名为 DoSomething(args) 的方法
在 DoSomething() 中,在它真正可以做某事之前,它需要对 args 做一些准备工作。我认为这应该封装在 ClassA 中(而不是在外面做准备工作并将其传递进去),因为没有其他东西需要知道 DoSomething 需要这个准备工作。
然而,让我思考的是实际的准备工作代码所属的地方。
在我的特定示例中,准备工作是从 args 创建满足特定条件的项目列表。
我的预感是我应该创建一个新类 ListOfStuff,它在其构造函数中接受 args 并将这个准备工作放在这里。
从 TDD 的角度来看,我认为这是正确的选择。然后我们可以对 ListOfStuff 进行单元测试,直到我们心满意足为止。如果我们把准备工作放在 ClassA 的私有(private)方法中,我们只能通过测试 DoSomething() 来间接测试它。
但这是否矫枉过正?自从采用 TDD 和 DI 方法以来,我已经看到我编写的类的数量成倍增加——我应该担心吗?
塔。
最佳答案
这里有一些启发式方法。
从调用到
调用?这项准备工作是否得到
每次你需要做
doSomething(),或者它完成了吗?
得救了吗?如果是这样,那就证明了
类(class)。
在不止一次的地方?如果是这样的话,
争论一个类(class)。
doSomething() 的实现
方法,或准备工作
它,改变而不影响
封闭类?如果是这样,那争论
上课。
好吧,三个启发式。没有人期望西类牙宗教裁判所。
关于unit-testing - 单独的类与方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/382602/