Fra*_*fer 7 language-agnostic oop functional-programming
罗伯特·马丁(Robert Martin)在他的《干净代码》一书中指出,函数参数的理想数量是零。大多数人都会同意太多的函数参数会导致很多问题。但据我所知,零参数的函数至少属于以下类别之一:
现在,类型 (1) 的函数并不是真正有用,而出于众所周知的原因,应避免使用 (2) 和 (3)。
我知道我提到的书是关于 OOP 的,因此函数通常属于一个对象,并获取作为隐式参数传递的对象引用。但访问对象属性仍然意味着 (2) 或 (3)。
那么我错过了什么?
如果你回答这个问题,请不要只是表达你的观点,而要提供合理的论据或具体的例子。不然很可能会关门。
那么我错过了什么?
马丁发言中的关键词是“理想”。如果您继续阅读,他会深入讨论带有一个、两个和三个参数的函数,但只在一种上下文中提到了 niladic 函数 - 测试。他声称测试它们很简单,大概是因为只有一种可能的结果,而且要么是正确的,要么是错误的。
所以这是一个理想,从中得到的原则是争论越少越好。显然,现实中这种理想很少能实现。函数的目的通常是直接或间接通过对象或系统状态获取输入(请注意,我也将这些称为“参数”,以与 Martin 的分析保持一致),并提供输出。当有多个参数时,测试用例的数量呈指数级增长,维护更加困难等等。
因此,只要您认识到这是一个理想的目标而不是您应该视为绝对的目标,您就不会“错过”任何东西。
C# 中“纯”niladic 函数的一些示例:
DateTime.MinValue
String.Empty
Run Code Online (Sandbox Code Playgroud)
C# 中返回对象或系统状态的 Niladic 函数:
DateTime.Now()
object.GetHashCode()
String.Length
Run Code Online (Sandbox Code Playgroud)