- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在重构几个月前编写的一些代码,现在我发现自己创建了很多小类(很少的属性、2-4 个方法、1-2 个事件)。
这是应该的吗?或者这也有点代码味道?
我的意思是,如果一个类确实需要很多方法来履行它的职责,我想它应该是这样的,但我也不太确定很多小类是不是特别好的做法?
最佳答案
很多小类听起来不错:)
特别是如果你让每个类实现一个接口(interface)并让不同的协作者通过这些接口(interface)而不是直接相互通信,你应该能够实现所谓的Supple Design(一个术语来自 Domain-Driven Design ) 有很多松耦合。
如果您可以将其归结为重要操作具有与输入相同类型的输出,您将实现 Evans 所说的操作闭包,我发现这是一个特别强大的设计技术。
当您应用 SRP 时往往会发生的情况是,尽管所有的类都从小开始,但您会不断重构,并且有时会突然涌现出一股洞察力,表明一些特定的类可能比以前丰富得多假设。
去做吧,但要永远重构 :)
关于c# - SRP 和很多类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1963991/
我正在尝试开发一个 Android 客户端,它通过来自 RFC 2945 的 SRP 协议(protocol)安全地连接到 Linux 服务器。 .我知道服务器通过 OpenSSL 库 API 实现
我正在尝试为 Autocad 编写一个插件,在那里,他们有这些扩展词典,您可以在其中将数据保存到 Autocad 对象中,以便在您关闭图形文件时,保存的数据仍然存在。 现在我需要 4 个函数来操作扩展
在编写应将数据从格式 A 转换为格式 B 的类时,如何避免违反“单一责任原则”? 此类更改有两个原因,因为格式 A 和 B 的规范都可以更改。 最佳答案 所以,我是新来的,并发布这个并附上我在提出我的
在经典的 Facade 模式中,单个对象通常为更复杂的事物提供简化的接口(interface)。 正如四人帮所说(尽可能接近“官方”......): Facade (185) Provide a un
目前我正在阅读 Uncle Bob 的干净代码书,在查看以下示例时在函数部分:- public Money calculatePay(Employee e) throws InvalidEmploye
我想重构 Cache 类,使其不违反单一职责原则 (SRP)。 但是,我很难弄清楚如何将 Cache 类中不必要的步骤重构为 memoize 函数。理想情况下,我会在 Cache 类 get 和 se
我在很多地方都读到 SRP 是一个很好的应用原则,我想在我的项目中应用它。 实际上,这是一个游戏,我的对象基本上有两个函数 update 和 draw,所以它们有两个职责(定义为“更改原因”)。它可能
我很难理解有时打破单一职责原则是否可以接受,或者是否应该不惜一切代价避免。 请注意,以下代码已简化为仅保留相关部分。 我有 Hero 类,代表一个角色,它可以拥有多个不同的 Items。 我有多个继承
我有一个算法可以为一个实体创建一个版本,然后我将该版本保存在以下 2 个实体中: 1) 变体 2)类别 interface IEntityVersion { string GetVersion
本文实例讲述了PHP面向对象五大原则之单一职责原则(SRP)。分享给大家供大家参考,具体如下: 单一职责原则(Single Pesponsibility Principle, SRP) 单一职责
我在看 Bob Martin's principles of OOD, specifically the SRP text ,我非常理解它所说的精神,但我不太明白链接的第 2 页(本书的第 150 页
我有 YoutubeVideoService执行 CRUD(创建、读取、更新和删除)操作的类。在我看来,创建、读取、更新和删除是类更改的四个原因。这个类是否违反了单一职责原则? 如果违反,那么我们应该
我刚刚回答了一个与 SRP 相关的问题,这让我思考:SRP 如何站在实用程序类上? 根据定义,实用程序类往往会做很多事情。我可以看到在单个接入点与门相关的实用程序是多么有用。根据 SRP 标准,您不能
我无法将单一职责原则与封装相协调。似乎在类之间划分职责需要公开大量数据。例如,考虑一个名为 DataPoints 的对象。 . DataPoints填充了 x 和 y 坐标等。我可以创建一个生成器类来
是否有任何主要浏览器中 RFC 5054 的计划或现有实现? 如果还没有人有一个实现,那么哪些主要浏览器在他们的路线图上有它?在哪里? 最佳答案 此功能在 Mozilla 的 radar 上,并且在
我有以下代码段,该函数将获取对象列表(我称之为 Y 对象)并调用另一个方法将其转换为 X 对象。 public List GetXObjects() { var yObjects= GetYO
我的应用程序使用 DI 框架,并在必要时遵循“编程到接口(interface)”的做法。 我使用构造函数注入(inject),因为我想明确地看到依赖关系。但是现在我的表单类的构造函数采用了太多参数(例
我正在重构几个月前编写的一些代码,现在我发现自己创建了很多小类(很少的属性、2-4 个方法、1-2 个事件)。 这是应该的吗?或者这也有点代码味道? 我的意思是,如果一个类确实需要很多方法来履行它的职
这段代码是否违反了SRP原则? function sendError(error) { log(error); response.status(500).send(error.mess
如果一个对象解析它自己的输入,是否被认为破坏了 SRP? 例如 class A { int x; string y; float f; A(string x, stri
我是一名优秀的程序员,十分优秀!