问题标签 [single-responsibility-principle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 类型转换或转换方法?
我有一个容器类,其参数来自不同类型的配置文件(例如文本或 xml)。
所以我为 textConfigurationFiles 创建了一个类,为 xmlConfigurationFiles 创建了一个类(我想我稍后会为此实现一个接口 IConfigFile)。
我的容器类的初始化如下所示:
或用于 xml
但是我不想分配每个值,而是进行某种转换。现在我不知道我是否应该实现一个类型转换或只是一个返回 ContainerClass 对象的简单方法?
或者
你的建议是什么?
因为我正在尝试实现单一职责原则,所以我希望我的 ContainerClass 代表一个简单的 Container。所以我想像
会与 SRP 决裂吗?
也许我应该提一下,我的 ContainerClass 是由文本或xml 文件初始化的;这并不是说参数来自文本和xml 文件。
[编辑:附加信息]
ContainerClass 表示具有数据库配置信息(路径、名称等)的容器。
textFile 表示数据库配置。
xmlFile 也包含一个数据库配置,但比我的 textFile 具有更多(数据库配置)参数。
我在想某事。喜欢:
或者
在文本文件配置中:
那么我应该更喜欢转换方法,类型转换还是两者兼而有之?
一开始我会考虑性能、最佳用法和个人习惯。
validation - 单一责任原则对验证意味着什么
单一责任原则是否意味着您的验证规则应该在实体外部?
如果是这样,您是否每个验证规则使用一个类?
asp.net-mvc - ASP.NET MVC:动作内的授权 - 建议的模式或者这是一种气味?
我有一个在控制器和操作上使用授权属性的 ASP.NET MVC 应用程序。这一直运作良好,但出现了新的皱纹。
对象:装运
角色:运输、会计、一般用户
货件通过工作流程移动。在状态 A 中,它只能由 Shipping 编辑。在状态 B 中,它只能由会计编辑。
我有一个 ShipmentController 和一个 Edit Action。我可以放置一个 Authorization 属性来将 Edit 操作限制为仅这两个角色,但这并不能区分 Shipment 处于哪个状态。我需要在服务调用之前在操作中执行一些 Authorization 以确定用户是否真正被授权执行编辑操作。
所以我有两个问题:
1)在Action中获得授权的好方法是什么。Controller Action 调用服务,然后服务对 Shipment 对象进行适当的调用(更新数量、更新日期等)。我确定我希望 Shipment 对象不受任何授权要求的影响。另一方面,如果我希望服务对象知道授权,我并没有真正的把握。有什么好的模式吗?
2)我的问题实际上是糟糕设计的症状吗?我应该有一个 StateAshipmentController 和 StateBshipmentController,而不是 ShipmentController?我没有在 Shipment 对象中内置任何多态性(状态只是一个枚举),但也许我应该并且控制器应该反映这一点。
我想我正在寻求更通用的解决方案,而不是针对我的案例的特定解决方案。我只是想提供一个例子来说明这个问题。
谢谢!
solid-principles - 单一职责原则:我应该将我的参考书目类分为 Reader、Writer 和 Container 类吗?
牛仔程序员需要一些 SO-veterans 的帮助:
我有一个给定的应用程序,它使用从文件中读取的书目(实际上,它可以是不同的文件,但我们假设只有一个文件)。
我构建了一个新的应用程序,它应该以与应用程序相同的方式使用参考书目,所以我复制了相应的类。
几天后,我开始运行 %-| ...
问题如下:
在 Bibliography 类中,有代码可以读取、编写和保存参考书目。当有一个类可以阅读参考书目和一个保存所有值的容器类时,我的工作会容易得多。我不想编写或编辑参考书目,只需将其读入并保留值。
那么我的想法是否正确,最好将参考书目类划分为 BibliographyReader、BibliographyWriter 和 Bibliography(Container) 类?
PS:有人可以创建一个标签“cowboy coder”、“cowboy coding”或类似的东西吗?我真的很想念这个标签;)
class-design - 单一职责原则:一个类中的所有公共方法都必须使用所有类依赖项吗?
假设我有一个如下所示的类:
然后我想添加相关但使用不同依赖项来实现其目的的功能。也许类似于以下内容:
当我为这个新功能编写单元测试(或更新我对现有功能的单元测试)时,我发现自己创建了一个新的 SomeClass 实例(SUT),同时为我不需要的依赖项传入 null对于我要测试的特定功能。
这对我来说似乎是一种难闻的气味,但我发现自己走上这条路的真正原因是因为我发现自己为我引入的每一个新功能都创建了新的类。这似乎也是一件坏事,所以我开始尝试将类似的功能组合在一起。
我的问题:一个类的所有依赖项是否应该被它的所有功能所消耗,即如果不同的功能位使用不同的依赖项,那么这些可能应该存在于单独的类中是一个线索吗?
.net - 在以下示例中对单一责任原则感到困惑
在下面的视频中,作者采用了一个现有的类并将单一责任原则分配给它。他参加了一个打印类,该类的任务是访问数据、格式化和打印报告。他将每个方法分解为自己的类,因此他创建了一个 DataAccess 类来处理数据访问,他创建了一个 ReportFormatter 类来处理报表的格式,他创建了一个 ReportPrinter 类来处理报表的打印。原来的 Report 类只剩下一个方法 Print(),它调用 ReportPrinter 的类方法 Print。DataAccess 和 ReportFormatter 似乎有责任,但 ReportPrinter 依赖于 DataAcess 和 ReportFormatter,所以这不会破坏 SRP 还是我误解了它?
single-responsibility-principle - 您违反单一责任原则的最佳例子是什么?
我正在寻找一些违反单一职责原则的代码的好例子。不要给我看鲍勃叔叔的书或网站中的任何例子,因为这些例子遍布互联网,就像这个:
oop - 单一职责原则与贫血域模型反模式
我在一个非常重视单一职责原则的项目中。我们有很多小班,事情很简单。然而,我们有一个贫乏的领域模型——在我们的任何模型类中都没有行为,它们只是属性包。这不是对我们设计的抱怨——它实际上似乎工作得很好
在设计评审期间,每当向系统添加新行为时,都会引入 SRP,因此新行为通常会在新类中结束。这使事情很容易进行单元测试,但有时我会感到困惑,因为感觉就像将行为从相关的地方拉出来。
我正在努力提高我对如何正确应用 SRP 的理解。在我看来,SRP 反对将共享相同上下文的业务建模行为添加到一个对象,因为该对象不可避免地最终要么做不止一件相关的事情,要么做一件事但知道改变形状的多个业务规则其输出。
如果是这样,那么感觉最终结果是一个贫血域模型,这在我们的项目中肯定是这种情况。然而,贫血域模型是一种反模式。
这两种想法可以共存吗?
编辑:几个与上下文相关的链接:
SRP - http://www.objectmentor.com/resources/articles/srp.pdf
贫血域模型 - http://martinfowler.com/bliki/AnemicDomainModel.html
我不是那种只喜欢寻找先知并遵循他们所说的福音的开发人员。因此,我不提供这些链接作为说明“这些是规则”的一种方式,只是作为这两个概念定义的来源。
single-responsibility-principle - 这是否违反了单一责任原则?
我有以下方法和接口:
因为规则具有优先级,所以它们实际上不应该被乱序处理。这导致我(我认为)三个解决方案:
- 在将规则传递给评估器之前对其进行排序。
- 将参数类型更改为强制排序顺序的东西。
- 在评估器中排序。
我喜欢选项 3,因为它始终确保它是有序的,我喜欢选项 1,因为它看起来更有凝聚力。选项 2 似乎是一个很好的折衷方案。
像这种上下文这样的场景是特定的/主观的,还是真的有一个最佳实践可以在这里应用?