Wenn die Reihenfolge wichtig ist, dann wird es mit Else If schnell unübersichtlich.
- Wenn die Reihenfolge wichtig ist, dann erscheint mir die Umsetzung einer Aufgabe mit Else_If sehr angemessen zu sein, denn bei Else_If ist ebenfalls die Reihenfolge immens wichtig.
- Wenn die Reihenfolge irrelevant ist, dann sollte man sich fragen und sehr genau überlegen, warum man trotzdem angedacht hatte, die Aufgabe per Else_If umzusetzen.
Sauber in die ELS_IF - Falle getreten
In den Beiträgen hier im Forum sehe ich immer wieder Warnungen vor der Anwendung von Else_If-Konstrukten, weil sie doch ach so fürchterlich unübersichtlich sein sollen.
Das verstehe ich überhaupt nicht. Denn, dass die Reihenfolge der Abfragen von enormer Wichtigkeit ist, das wissen doch eigentlich alle, die vor der Anwendung warnen.
Ist es denn sooo schwer, sich zu merken, dass immer nur ein einziger der Zweige ('If Bedingung Then' oder 'Else_If Bedingung Then' oder 'Else') durchlaufen wird?
Ist es denn immer wieder sooo überraschend, dass dieser einzige durchlaufene Zweig immer der erst-beste ist, bei dem die abgefragte Bedingung zutrifft?
Ich kann das wirklich nicht verstehen, denn für mich ist das Verfahren so was von klar, dass es an Klarheit praktisch nicht zu überbieten ist.
Was macht die Angelegenheit denn so unübersichtlich? Die Länge und die Vielzahl der Vergleiche und sonstiger Kriterien? Oder sind es nur die etwas zu lang geratenen symbolischen Namen?
Tipp:
Ich frage gerne in Else_If-Konstrukten zuerst die Fälle ab, in denen nichts passieren soll.
Nicht mit kompliziert zusammengesetzten Abfragen à la
"wenn Kriterium 1 erfüllt UND Kriterium 2 erfüllt UND Kriterium 3 erfüllt, dann mach dies",
sondern mit vielen einfachen Abfragen à la
"wenn Kriterium 1 nicht erfüllt, dann tue nix"
"wenn Kriterium 2 nicht erfüllt, dann tue nix"
"wenn Kriterium 3 nicht erfüllt, dann tue nix"
"sonst tue dies".
Das mag unkonventionell und für viele sehr ungewohnt sein, aber unübersichtlich? Das ist es wirklich nicht.
Zumal man sich ersparen kann, ein und dasselbe Kriterium immer wieder abzufragen.
Ich habe schon recht absonderliche Beispiele dafür gesehen, wie längst abgefragte und ausgesonderte Fälle "vorsichtshalber" immer wieder in folgenden Else_If-Zweigen abgefragt werden. So etwas kann die Angelegenheit ganz schön (unnötig!) unübersichtlich werden lassen.
Wenn das, was übrig bleibt, zu kompliziert und zu unübersichtlich erscheint, dann könnte es auch daran liegen, dass die zu lösende Aufgabe kompliziert und schwer verständlich ist - oder der Programmierer den Wald vor lauter Bäumen aus dem Blickfeld verloren hat.
Und genau dann ist es besonders angenehm und schön, wenn man die programmtechnische Umsetzung möglichst einfach und übersichtlich halten kann, z.B. durch das frühzeitige Aussortieren der irrelevanten Fälle, schön übersichtlich, einen nach dem anderen, so wie ich es im Tipp angedeutet habe.
Dass bei Else_If-Konstrukten immer der erst-beste Zweig durchlaufen wird, dessen Bedingung erfüllt ist, macht das Lesen des Programms nicht schwieriger, sondern leichter. Man kann sich absolut darauf verlassen, dass man die restlichen Else_If-Zweige und den Else-Zweig getrost ignorieren darf, sobald der erste Zweig mit zutreffender Bedingung gefunden ist.