【发布时间】:2018-11-11 03:41:27
【问题描述】:
我知道从 C# 7.0 开始我们可以创建本地函数,但这与 SOLID 原则有什么关系以实现良好的设计模型?
我的意思是,这不是违反单一职责原则,在另一个函数中添加一个函数吗?
我们可以将这个简单的任务委托给另一个方法或另一个新类来计算吗?对于允许我从 SomeClass 继承来修改它的 Open-Closed 原则现在更加复杂,我现在需要重写整个基本函数而不是我的代码的一部分?
可能我们只需要重新编写方法的某些部分而不是更改其上的整个功能。
【问题讨论】:
-
请在此处阅读:en.wikipedia.org/wiki/Nested_function 这个概念并不新鲜,甚至对于 C# 7.0 来说也不是特别的。我在 1990 年左右与 Pascal 一起使用了这个概念。
-
对于初学者,SOLID 适用于类,而不适用于这些类中的方法。方法是否通过单个语句、充满代码的页面或通过调用本地函数来完成其工作对类的设计和接口并不重要。显然,做“很多事情”的“大”方法可能是维护问题的迹象,但无论您是否在 SOLID 教堂祈祷都是如此,并且本地功能不会立即产生维护问题。他们可能成为新方法或新类的候选者,或者他们可能不会。
-
作为一个对立点,考虑一个你总是将每个本地函数拆分为自己的方法的世界,并且可能将它们重新打包到新的类中,而不管你为什么这样做.现在你有一个完全不同的问题:你负责保持这些东西可用并为客户工作。当然,您可以选择将它们设为私有或以其他方式隐藏以避免这种负担——但这正是您使用本地函数实现的,不是吗?
标签: c# .net solid-principles c#-7.0