Wenn ich einen Schalter verwende (in diesem Fall in Java), verwende ich normalerweise den Standardfall, falls erforderlich. Einer meiner Lehrer erzählte mir, dass dieser Fall, als er in Pascal programmiert hatte, nicht existierte. Er sagte, wenn es in Pascal nicht gäbe, sollte es nichts Gutes sein.
Meine Fragen sind:
Vielen Dank im Voraus.
Ich würde es für eine schlechte Angewohnheit halten, es nicht zu benutzen.
Bearbeiten:
Das ist Pascal, nur um zu beweisen, dass dein Lehrer falsch ist
%Vor%Das Verwenden eines Standardfalls ist immer eine gute Angewohnheit. Ich benutze es sogar beim Einschalten einer Enum. Wenn die Enumeration 3 Werte hat, habe ich 3 Case-Anweisungen und eine Case-Anweisung, die einen AssertionError auslöst.
Das ist gut, denn wenn die Enumeration erweitert wird, wird sichergestellt, dass Fehler in Verbindung mit dem Fehlen der neuen Werte in switch-Anweisungen bald erkannt werden.
Mit dem Standardfall ist nichts falsch. In der Tat, ich glaube, es sollte fast immer verwendet werden, um einen Fehler zu werfen, um einen fehlerhaften Wert im Schalter anzuzeigen.
Das Einzige, woran ich denken kann, dass Sie den Professor dazu bringen könnten, eine solche Aussage zu machen, ist seine Überzeugung, dass Ihre Daten validiert sein sollten, bevor Sie eine Fallaussage erhalten. Wenn Sie gut programmieren, werden Ihre Fälle jede Kontingenz widerspiegeln.
Nun, wenn das der Fall wäre, dann würden wir keine Ausnahmen brauchen, Punkt. Die ganze Idee von Ausnahmen besteht darin, unvorhergesehene Bedingungen zu behandeln. Wenn es vernünftigerweise vorhersehbar war, würden Sie damit umgehen.
Also, werfen Sie in Ihren Switch-Standardanweisungen auf jeden Fall eine Ausnahme aus.
Wie funktionieren sie intern? Ich bin mir sicher, dass es viele mögliche Implementierungen gibt, aber logisch ist der Standardfall nur die letzte else-Klausel in einer langen Kette von if..then..if..then..else's.
Ja, es empfiehlt sich, den Standardfall zu verwenden, denn wenn Sie später die Bedingungen oder Aufzählungen ändern, die Sie in Ihrer switch-Anweisung verwenden, verhält sich die Anwendung "weniger falsch" als wenn die neuen Werte nicht wären überhaupt abgedeckt. Tut mir leid zu sagen, aber IMO Ihr Lehrer hat ein bisschen, um mit neueren Programmiermethoden nachzuholen.
Intern funktioniert es so, dass die Standardverzweigung verwendet wird, falls die Bedingung keiner der anderen aufgeführten Bedingungen entspricht.
Tags und Links java coding-style switch-statement pascal