什么是程序设计中的Side Effect(副作用)?
Side Effect 通常是功能的“副作用”,表示功能“有副作用”或“无副作用”。
数学上的函数,描述输入值和输出值之间的对应关系。在程序设计中,没有副作用的函数,它们仅计算输入值到输出值的映射。
如果函数修改了超出其范围的资源,则称其具有副作用,否则,则没有副作用。
例如访问全局变量,读写文件,网络传输,界面交互显示,等等。
举个更具体的例子,假设某个函数在参数的特定组合下返回结果A。我们将编写此函数以直接返回A。如果修改后整个程序与以前相同,则表示此功能没有副作用,相反,它们具有副作用。
显然,具有副作用的函数会(不限于)执行以下操作:
- 修改全局变量;
- 修改输入参数引用的对象;
- 进行输入和输出操作;
- 调用具有副作用的其他功能;