Wie führt die Einzelzuweisung in Erlang zu besser lesbarem Code (referenzielle Transparenz)?Wie führt die Einzelzuweisung in Erlang zu besser lesbarem Code?
Antwort
Codierung ist einfach, Debugging ist schwer. Code, um das Debugging trivial zu machen. - Barry Rountree
Mit einer einzigen Zuweisung können Sie sicher sein, dass die Variable einen Wert im gesamten Funktionskörper hat. Es erleichtert das Debugging erheblich. Sie können Debugging und Protokollierung wann immer Sie möchten. Sie können leicht den Ort erkennen, an dem es seinen Wert erreicht und so weiter. Ist es nicht offensichtlich?
Eines der Ziele von funktionalen Programmen ist zu vermeiden side effects. Kurz gesagt ist dies eine Eigenschaft des Codes, dass er sich bei jeder Ausführung genau gleich verhält. Das ist warum shared state is being avoided und warum Entwickler oft die in Erlang Stirnrunzeln. Eine reine funktionale Sprache hätte keine Nebenwirkungen. Verschiedene funktionale Sprachen versuchen, Code zu kodifizieren, der Nebenwirkungen erzeugt, wie zum Beispiel Haskell.
Offensichtlich, wenn der einer Variablen zugewiesene Wert geändert werden kann, würde dieselbe Funktion, die zweimal ausgeführt wird, je nach dem in der Variablen enthaltenen Wert zu einem anderen Ergebnis führen. In der OOP-Ausgabe einer Funktion, die für ein Objekt ausgeführt wird, wird ein Ergebnis erzeugt, das von dem in diesem Objekt enthaltenen Status abhängt. Sie können also den Code nicht richtig verstehen, ohne den im Objekt enthaltenen Zustand zu kennen.
Bei der einfachen Zuweisung hängt die Ausgabe nicht vom Status ab, sondern nur von den Argumenten, die an die Funktion übergeben werden. Dies ist besonders nützlich, wenn etwas abgestürzt ist und Sie einen Stack-Trace haben oder eine Debug-Ausgabe von einer Funktion protokollieren. Sie können den Code lesen und jeder Variablen Werte zuweisen, in dem Wissen, dass nichts diese Werte geändert hätte, wenn derselbe Code erneut ausgeführt werden würde.