Der Martin: Schleife

Beitrag lesen

Hallo,

if ($data = GetStudioArray(...)) {...} das verstehe ich schon, aber finde es nicht so toll, aber evtl. Ändere ich ja meine Meinung noch :)
Ich würde die Zuweisung nicht so realisieren.

ich schon, aber ich würde es nicht unbedingt jemand anderem empfehlen.

Der Ausdruck hinter if enthält normalerweise immer irgendwelche Vergleiche.

Sagen wir: Logische (boolsche) Ausdrücke. Das kann ein Vergleich sein, aber auch jeder andere Ausdruck, der true oder false ergibt; sehr angenehm sind hier auch Funktionen mit gut gewählten Namen, die ein boolsches Ergebnis liefern, z.B. "if (isValidNumber(n))", das kann man nämlich fast wie Klartext lesen und verstehen.
In einigen Sprachen (C, Javascript, PHP) geht sogar jeder Ausdruck, der irgendwas liefert, was als true oder false interpretiert werden könnte (etwa ein Zahlenwert !=0 für true, oder ==0 für false; ein gültiger Pointer !=NULL für true, ein NULL-Pointer für false).

Wenn das jetzt gemischt werden kann mit Zuweisungen, dann eröffnet das eine typische Fehlerquelle: Statt eines gewollten Vergleichs schreibt man aus Versehen auch nur eine Zuweisung, weil man ein Gleichheitszeichen vergisst, und wundert sich dann über die daraus entstehenden Fehler.

Das ist eine Frage der Erfahrung und Gewohnheit. Wenn man in der Klammer des if-Statements oft genug etwas notiert, was kein Vergleich ist, fällt mit der Zeit auch die Selbstverständlichkeit weg, mit der man annimmt, es müsse ein Vergleich sein, so dass man automatisch genauer hinsieht.

Dieser Fehler ist so typisch und häufig, dass gute Entwicklungsumgebungen die Verwendung von Zuweisungen in Bedingungen als mögliche Fehlerquelle im Code markieren.

Stimmt, habe ich häufig.

Und weil es besser ist, wenn der eigene Code keine Warnungen und Fehlermarkierungen enthält, hat man zwei Alternativen: Den Code so gestalten, dass er diese Zuweisung nicht im IF enthält, oder die Warnung abschalten, die einen davor bewahren würde, an anderen Stellen nicht aus Versehen den Vergleich falsch zu schreiben.

Ich wähle dann in aller Regel die zweite Alternative.

Aber, wie oben schon erwähnt: Auch wenn ich solche Ausdrücke gern und oft verwende, würde ich sie einem Neuling nicht empfehlen. Ein alter Hase kommt irgendwann von selbst darauf, dass das in bestimmten Situationen praktisch sein kann.

Ciao,
 Martin

--
Ordnung ist, wenn man etwas findet, was man gar nicht sucht.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(