快速设计问题。
ClassA有一个名为DoSomething(args)的方法
在DoSomething()中,在它真正可以做一些事情之前,它需要用args做一些准备工作。我认为这应该封装在ClassA中(而不是在外部做准备工作,然后传入),因为其他人不需要知道这个准备工作是DoSomething所必需的。
然而,真正让我思考的是实际的准备工作代码所属的地方。
在我的特定示例中,准备工作是从args创建满足特定条件的项的列表。
我的直觉是我应该创建一个新的类,ListOfStuff,它在构造函数中接受args,并将准备工作放在这里。
从TDD的角度来看,我认为这是正确的选择。然后我们可以对ListOfStuff进行单元测试,直到我们的心满意为止。如果我们将准备工作放在ClassA的私有方法中,我们只能通过测试DoSomething()来间接测试它。
但是,这是不是言过其实了?自从采用TDD和DI方法以来,我已经看到我编写的类的数量成倍增加-我应该担心吗?
好的。
发布于 2008-12-20 00:18:16
这里有几个启发式方法。
,
好吧,三个启发式。没人期待西班牙宗教裁判所。
发布于 2008-12-19 23:59:08
最简单的可行方法是什么?这就是TDD的口头禅。不要试图想得太远。如果到了创建helper类的时候,您就会知道了,因为您将在其他类的多个方法中执行各种相关工作。在此之前,请在您的方法中完成工作。如果它使方法太长或难以阅读,则将工作提取到它自己的方法中。此方法也可以在不需要另一个类的情况下进行尽情测试。
发布于 2008-12-20 00:02:45
明确地把它放在一个新的类中。这叫做关注点分离。你不想重载一个类,让它做其他所有的事情。这是因为你的类不能在其他地方使用,因为它是如此特定于一件事。
将它放在类中,然后在其他地方使用该类。否则,您将不得不在将来一次又一次地编写这段代码。
为了使它具有可扩展性,并且能够传入各种不同的算法,您在这里要使用的设计模式是Strategy模式。但那是为了将来..。
https://stackoverflow.com/questions/382602
复制相似问题