Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 接口中的void方法是代码气味吗?_Oop_Interface_Void - Fatal编程技术网

Oop 接口中的void方法是代码气味吗?

Oop 接口中的void方法是代码气味吗?,oop,interface,void,Oop,Interface,Void,我的意思是设计闻起来像是时间耦合。 Void方法在其签名中没有类型安全的严格描述,说明了为什么以及何时应该调用它。所以这只取决于文档。使用它是基于对副作用正确性的信任 那么,我们是否应该尝试摆脱接口中的void方法呢?void方法是而不是设计气味 面向对象(与函数式编程不同)允许产生副作用,例如更改调用该方法的对象的内部结构。这是正常的 这是否好是另一个问题。函数式编程在表达能力方面无疑更强大。编写几乎不可能被误用的代码是可能的(当它编译时,它可以工作) 另外,void方法通常不会导致时间耦合。

我的意思是设计闻起来像是时间耦合。 Void方法在其签名中没有类型安全的严格描述,说明了为什么以及何时应该调用它。所以这只取决于文档。使用它是基于对副作用正确性的信任


那么,我们是否应该尝试摆脱接口中的void方法呢?

void方法是而不是设计气味

面向对象(与函数式编程不同)允许产生副作用,例如更改调用该方法的对象的内部结构。这是正常的

这是否好是另一个问题。函数式编程在表达能力方面无疑更强大。编写几乎不可能被误用的代码是可能的(当它编译时,它可以工作)

另外,void方法通常不会导致时间耦合。时间耦合意味着,必须在方法之前或之后调用另一个方法,否则方法调用没有意义


当然,您必须知道方法调用的语义,换句话说,它意味着什么。这是意料之中的,在函数编程中也是如此,对于具有相同签名的函数。

Void方法在无状态时没有时间耦合。但是无状态void方法只能通过可变参数提供有效载荷,这实际上是一种代码气味。@SerG void方法还可以通过修改构造函数中初始化的公共成员变量来提供有效载荷。