远隔作用 (计算机科学)
维基百科,自由的 encyclopedia
远隔作用(Action at a distance)是一种程式设计中的反模式,是指程式某一部份的行为会广泛的受到程式其他部份指令的影响,而且要找到影响其他程式的指令很困难,甚至根本无法进行。
避免远隔作用的方法是避免使用全域变数,利用可控制的区域变数来调整资料,或是使用有参照透明度(英语:Referential transparency (computer science))的纯函数程式语言。
此词语的由来是来自物理学中的远距作用,是指一个物体在和另一物体中间没有粒子交换的情形下,影响另一物体的现象,量子力学的量子缠结就是远距作用的一个例子,爱因斯坦将此称为“鬼魅似的远距作用”(spooky action-at-a-distance)。
远隔作用造成的程序错误常是因为程式模组的特定机能在错误的时间动作,或是影响了不应当影响的变数。不过很难找出是哪一个模组造成的影响。一些看似没有问题的动作的副作用使得程式在一个未知的状态中,因此局部的资料也可能不是局部的,有可能受到其他模组的影响。改善远隔作用的方式是定义一个模组可以影响模组的范围。若在软体设计时准确的定义各模组之间的介面,避免使用共享的资料或是全域变数,可以大幅减少远隔作用造成的问题。