c# - 局部函数和 SOLID 原则 C#
问题描述
我知道从 C# 7.0 开始,我们能够创建本地函数,但这与 SOLID 原则有什么关系以实现良好的设计模型?
我的意思是,这不是打破单一职责原则,在另一个函数中添加一个函数吗?
我们可以将这个简单的任务委托给另一个方法或另一个新类来计算吗?对于允许我从 SomeClass 继承来修改它的 Open-Closed 原则现在更加复杂,我现在需要重写整个基本函数而不是我的代码的一部分?
可能我们只需要重新编写方法的某些部分而不是更改其上的整个功能。
解决方案
我在一定程度上同意你的看法。这里的答案是否支持所谓的上帝(小g)方法我个人觉得,就像你一样,这些方法应该是精确的。
也就是说,本地函数实际上可以支持 SOLID。一个例子是能够轻松地连接来自事件的回调,赋予方法单一职责,关闭范围,并最大限度地减少错误。这可以通过本地代表来完成,但它不是那么干净或直接。
递归局部函数也符合 SOLID。在很多情况下,您必须编写两个方法来完成一个操作,因为它是一种递归方法,现在您可以将所有逻辑放在一个地方。有时,根据传递的数据和类型,局部函数实际上会更好地执行,因为它们借用了作用域变量。
这只是两个简单的示例,可能不需要辩论或大量代码来说明本地函数如何更好并与 SOLID 内联,但还有更多。
本地函数还可以很容易地污染您的代码,使方法难以管理/阅读和背离 SOLID 原则。就像任何其他 C# 组件一样,我们有责任选择何时以及为何使用本地函数和 SOLID 以及其他开发实践/指南,当我们这样做时应予以考虑。我不同意让方法变得更长、更复杂,或者仅仅为了确定方法的范围而要做不止一项工作。
推荐阅读
- javascript - 从 javascript 运行 python
- java - 切换对象创建重构
- c++ - 我可以在 C++ 中扩展变体吗?
- vb.net - 用 ListView 数据填充多个文本框
- html - 覆盖不包装所有的 div css
- sql - 从同一级别查询中除以两个总和
- java - Spring Boot 2.0 中的 EmbeddedServletContainerAutoConfiguration 和 ServerPropertiesAutoConfiguration
- azure - 如何将 Pipeline 构建代理连接到私有 Artifacts 注册表?
- php - 使用 PHP 5.13(多维)将 HTML 表单转换为 JSON
- c# - c#如何扫描成员日期以及如何找到最旧的?