我的意思是设计气味就像时间耦合。 Void方法在其签名中没有类型安全严格的描述关于为什么以及何时应该调用它的情况。所以它只取决于文档。使用它是基于对副作用正确性的信念。
那么我们应该尝试摆脱接口中的void方法吗?
答案 0 :(得分:0)
虚空方法不设计气味。
面向对象(与函数式编程不同)允许副作用,例如更改调用方法的对象的内部。这很正常。
这是否好是另一个问题。功能编程在表达方面肯定更强大。可以编写几乎不可能被滥用的代码(当编译它有效时)。
此外,void方法通常不会导致时间耦合。时间耦合意味着必须有另一种方法必须在方法之前或之后调用,否则方法调用没有意义。
当然你必须知道方法调用的语义,换句话说,意味着什么。对于具有相同签名的函数,这也是预期的,在函数式编程中也是如此。