首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分离类与方法

分离类与方法
EN

Stack Overflow用户
提问于 2008-12-19 23:53:21
回答 6查看 505关注 0票数 5

快速设计问题。

ClassA有一个名为DoSomething(args)的方法

在DoSomething()中,在它真正可以做一些事情之前,它需要用args做一些准备工作。我认为这应该封装在ClassA中(而不是在外部做准备工作,然后传入),因为其他人不需要知道这个准备工作是DoSomething所必需的。

然而,真正让我思考的是实际的准备工作代码所属的地方。

在我的特定示例中,准备工作是从args创建满足特定条件的项的列表。

我的直觉是我应该创建一个新的类,ListOfStuff,它在构造函数中接受args,并将准备工作放在这里。

从TDD的角度来看,我认为这是正确的选择。然后我们可以对ListOfStuff进行单元测试,直到我们的心满意为止。如果我们将准备工作放在ClassA的私有方法中,我们只能通过测试DoSomething()来间接测试它。

但是,这是不是言过其实了?自从采用TDD和DI方法以来,我已经看到我编写的类的数量成倍增加-我应该担心吗?

好的。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-12-20 00:18:16

这里有几个启发式方法。

  1. 这个类上是否存在从一个调用到另一个调用的状态?这项准备工作是在您每次需要doSomething()时完成的,还是已经完成并保存了?如果是这样的话,这就是类的问题,

  1. ,这个计算需要在不止一次的地方进行吗?如果是这样,那么就需要一个类。
  2. doSomething()方法的实现细节或准备工作是否可以更改,而不影响封装的类?如果是这样的话,就需要一个类了。

好吧,三个启发式。没人期待西班牙宗教裁判所。

票数 4
EN

Stack Overflow用户

发布于 2008-12-19 23:59:08

最简单的可行方法是什么?这就是TDD的口头禅。不要试图想得太远。如果到了创建helper类的时候,您就会知道了,因为您将在其他类的多个方法中执行各种相关工作。在此之前,请在您的方法中完成工作。如果它使方法太长或难以阅读,则将工作提取到它自己的方法中。此方法也可以在不需要另一个类的情况下进行尽情测试。

票数 4
EN

Stack Overflow用户

发布于 2008-12-20 00:02:45

明确地把它放在一个新的类中。这叫做关注点分离。你不想重载一个类,让它做其他所有的事情。这是因为你的类不能在其他地方使用,因为它是如此特定于一件事。

将它放在类中,然后在其他地方使用该类。否则,您将不得不在将来一次又一次地编写这段代码。

为了使它具有可扩展性,并且能够传入各种不同的算法,您在这里要使用的设计模式是Strategy模式。但那是为了将来..。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/382602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档