Java Reference
In-Depth Information
Seiteneffektfreie Funktionen führen zu besser lesbaren und weniger fehleranfälligenden Program-
men. Definieren Sie eine boolesche Funktion
linksFrei
also immer folgendermaßen:
boolean linksFrei() {
linksUm();
if (vornFrei()) {
rechtsUm();
return true;
} else {
rechtsUm();
return false;
}
}
void rechtsUm() {
linksUm();
linksUm();
linksUm();
}
Wenn Sie - aus welchem Grund auch immer - dennoch Seiteneffekte produzierende Funktionen
definieren, sollten Sie auf jeden Fall durch einen Kommentar darauf hinweisen.
Mögliche durch boolesche Funktionen hervorgerufene Seiteneffekte führen dazu, dass die folgenden
beiden Anweisungen nicht unbedingt semantisch äquivalent sein müssen. Dabei sei
bA
Platzhalter
für einen beliebigen booleschen Ausdruck und
anweisung1
und
anweisung2
seien Platzhalter für
beliebige Anweisungen:
// Anweisung 1
// Anweisung 2
if (bA)
if (bA)
anweisung1
anweisung1
else
if (!bA)
anweisung2
anweisung2
Mit Hilfe der Seiteneffekte lässt sich dieses Phänomen nun auch verstehen. Konkretisieren wir die
Anweisungen dadurch, dass wir für
bA
die oben definierte einen Seiteneffekt produzierende boole-
sche Funktion
linksFrei
verwenden und die beiden Anweisungen
a1
und
a2
durch die Leeran-
weisung ersetzen:
// Anweisung 1
// Anweisung 2
if (linksFrei())
if (linksFrei())
;
;
else
if (!linksFrei())
;
;
Werden die Anweisungen jeweils in der in Abbildung 11.7 (a) skizzierten Situation aufgerufen, so
ergibt sich nach Ausführung von Anweisung 1 der in Abbildung 11.7 (b) und nach Ausführung von
Anweisung 2 der in Abbildung 11.7 (c) dargestellte Zustand. Die beiden Zustände sind nicht gleich,
die Anweisungen also nicht semantisch äquivalent.


























































































Search WWH ::

Custom Search