1

Erlang 中的单一赋值如何导致代码更具可读性(引用透明性)?

4

2 回答 2

2

编码容易,调试难。使调试变得微不足道的代码。——巴里朗特里

通过一次赋值,您可以确保该变量在整个函数体中具有一个值。它使调试更容易。您可以随时进行调试和记录。你可以很容易地发现它获得价值的地方等等。这不是很明显吗?

于 2016-04-27T08:26:46.970 回答
1

函数式程序的目标之一是避免副作用。简而言之,这是代码的一个属性,每次执行时它的行为都完全相同。这就是为什么要避免共享状态以及为什么开发人员经常不喜欢Erlang 中的进程字典的原因。纯函数式语言不会有任何副作用。各种函数式语言都试图将产生副作用的代码形式化,例如Haskell

显然,如果分配给变量的值可以改变,那么同一个函数执行两次会产生不同的结果,这取决于变量中包含的值。在 OOP 中,对对象执行的函数的输出会产生取决于该对象中包含的状态的结果。因此,如果不知道对象中包含的状态,您也无法正确理解代码。

使用单一赋值,输出不依赖于状态,而只依赖于传递给函数的参数。当发生崩溃并且您有堆栈跟踪或记录函数的调试输出时,这尤其有用。您可以阅读代码并将值分配给每个变量,因为如果要再次执行相同的代码,则不会更改这些值。

于 2016-04-27T10:06:56.353 回答