首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SRP和很多类

SRP和很多类
EN

Stack Overflow用户
提问于 2009-12-27 02:32:17
回答 3查看 1.3K关注 0票数 3

我正在重构几个月前写的一些代码,现在我发现自己创建了很多小类(很少的属性,2-4个方法,1-2个事件)。

事情就应该是这样的吗?或者这也有一点代码的味道?

我的意思是,如果一个类确实需要很多方法来履行它的责任,我想这就是它必须要做的,但我也不确定很多小类是不是特别好的实践?

EN

回答 3

Stack Overflow用户

发布于 2009-12-27 02:54:34

很多小班听起来还不错:)

特别是,如果您让每个类实现一个接口,并让不同的协作者通过这些接口进行通信,而不是直接相互通信,那么您应该能够实现具有大量松散耦合的所谓Supple Design (来自Domain-Driven Design的术语)。

如果您能将其简而言之,使重要的操作具有与输入相同类型的输出,那么您将实现Evans所说的操作的闭包,我发现这是一种特别强大的设计技术。

当您应用SRP时,往往会发生的情况是,尽管所有的类都是从小的开始的,但您会不断地重构,并且不时会有一些突然的洞察力澄清了一些特定的类可能比之前假设的要丰富得多。

做到这一点,但永远保持重构:)

票数 4
EN

Stack Overflow用户

发布于 2009-12-27 03:39:08

srp的全部内容就是大量具有集中职责的小班。所以,是的,对于srp倡导者来说,这就是事情“应该是这样的”。但是,您看到系统中类的数量呈爆炸式增长,并且开始变得非常难以记住或直观地知道实际在何处完成了操作,不是吗?实际上,您暴露了一种新的代码味道,这是srp带来的(通常不必要的)复杂性增加。我写了一个关于它的条目here。看看你会不会同意。

票数 1
EN

Stack Overflow用户

发布于 2009-12-27 22:30:47

我认为你必须找到折中的办法。太多的类有时会被过度杀伤力。从我这方面来说,我尝试在较小的层次上分离关注点,如果事情变得更好,那么就会重构出更粗糙的粒度:

首先通过提取方法来编写单独的关注点。如果你可以在数据(实例+静态字段)上看到一组方法来形成一个专门的责任‘提取类’。一段时间后,如果您可以看到包中的不同类分组,请执行“提取包”。

我发现这种(爆炸)方法更自然,因为从一开始就创建了大量的类和包。但这也取决于...:如果我一开始就能看到更大的组件,我就已经创建了专用的包结构。

可能需要更多关于您的代码的详细信息,以提供更具体的帮助:)

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

https://stackoverflow.com/questions/1963991

复制
相关文章

相似问题

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