language-agnostic - 一个方法究竟什么时候有副作用?

标签 language-agnostic oop definition side-effects

正如我一直理解的那样,对程序状态(或与 IO 相关的任何事情)的任何更改都是副作用。更改是发生在全局变量中还是发生在调用该方法的对象的私有(private)字段中都没有关系。因此,所有不返回任何内容的方法要么什么都不做,要么有副作用。我的困惑来自我们大学的一位讲师(他仍然是学生,因此还不是无所不知的;))告诉我二传手没有副作用。

最佳答案

你的导师搞错了。对于没有将整篇文章粘贴到此处的 SO 编辑表示歉意,这就是 Wikipedia 必须说的:

http://en.wikipedia.org/wiki/Side_effect_(computer_science)

金钱报价#1:

In computer science, a function or expression is said to have a side effect if, in addition to producing a value, it also modifies some state or has an observable interaction with calling functions or the outside world.



金钱报价#2:

In the presence of side effects, a program's behavior depends on past history; that is, the order of evaluation matters.



非 NOP setter 始终满足该标准。

关于language-agnostic - 一个方法究竟什么时候有副作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/810289/

相关文章:

在数组中查找具有给定差异的 2 个项目的算法

language-agnostic - 验证码验证逻辑?

c# - 混淆为什么接口(interface)在基接口(interface)已经继承的情况下又被继承了

git - "downstream"和 "upstream"的定义

multithreading - 这是双重检查锁定的安全版本吗?

algorithm - 最优雅的扩展卡牌手牌的方式

oop - 使用构造函数依赖注入(inject)时提供依赖项的后备/默认值?

c - 如何实现继承: error: conflicting declaration ‘typedef struct

C++::#include:ing 多个源文件中的模板类头文件?

C++ 对模板结构声明歧义!