Mutable Zustand alles ist, die eine Funktion zurückgeben einen anderen Wert machen, obwohl es sich als mit den gleichen Argumenten aufgerufen.
Einfaches Beispiel in Java:
public static double badSqrt(double x) {
double r = Math.sqrt(x);
if (System.currentTimeMillis() % 42L == 0L) return r;
return r + 0.000000001;
}
Diese Funktion berechnet ein etwas manchmal falsches Ergebnis. Wir sagen, dass badSqrt
unrein ist, weil sein Ergebnis nicht nur von seinem Argument (und seinen Konstanten) abhängt.
Für die Person, die ein Programm debuggt, das Aufrufe an badSqrt() oder unreine Funktionen im Allgemeinen enthält, ist dies ein Albtraum. Oft scheint das Programm zu funktionieren, aber ab und zu werden falsche Ergebnisse geliefert. Wenn die Funktion nicht eindeutig dokumentiert ist oder der Quellcode verfügbar ist, ist es schwierig, den Fehler zu verfolgen.
In solchen Fällen wird gesagt, dass das Verhalten der Funktionen vom veränderlichen Zustand abhängt. Dies ist ein Zustand, der durch völlig unabhängige Teile des Programms oder (wie in dem Beispiel) durch ein anderes Programm (das Betriebssystem) geändert (mutiert) werden könnte.
Jeder kann es besser erklären? o.O. –