Erlang中的单个赋值如何导致更易读的代码(引用透明度)?
答案 0 :(得分:2)
编码很容易,调试很难。代码使调试变得微不足道。 - Barry Rountree
使用单个赋值,您可以确保变量在整个函数体中具有一个值。它使调试更容易。您可以随时进行调试和记录。您可以轻松找到它获得价值的地方,依此类推。不是很明显吗?
答案 1 :(得分:1)
功能性计划的目标是避免side effects。简而言之,这是代码的属性,每次执行时它的行为都完全相同。这就是为什么shared state is being avoided以及为什么开发人员经常对Erlang中的process dictionary不满意的原因。纯函数式语言不会产生任何副作用。各种函数语言试图将产生副作用的代码形式化,例如Haskell。
显然,如果可以更改赋给变量的值,那么执行两次相同的函数会产生不同的结果,具体取决于变量中包含的值。在OOP中,对象上执行的函数输出产生的结果取决于该对象中包含的状态。因此,如果不知道对象中包含的状态,就无法正确理解代码。
使用单一赋值时,输出不依赖于状态,而只依赖于传递给函数的参数。当崩溃并且您有堆栈跟踪或从函数记录调试输出时,这尤其有用。您可以读取代码并为每个变量赋值,因为如果要再次执行相同的代码,任何事情都不会改变这些值。