Ist "Standard" in einer Switch-Anweisung eine gute Angewohnheit?

8


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:

  • Ist es falsch, den Standardfall zu verwenden?
  • Wie funktioniert das intern?

Vielen Dank im Voraus.

    
Daniel Higueras 06.03.2011, 15:50
quelle

6 Antworten

16

Ich würde es für eine schlechte Angewohnheit halten, es nicht zu benutzen.

  • Wenn Sie glauben, dass der Standardfall nie vorkommen wird, werfen Sie eine Ausnahme aus, um sicher zu sein
    • Wenn Sie eine Enumeration wechseln, kann es vorkommen, dass jemand einen anderen Wert hinzugefügt hat
    • Wenn Sie eine Ganzzahl wechseln, ist es immer möglich, dass ein unerwarteter Wert gefunden wird
  • weil der Standardfall immer dann auftritt, wenn Sie es am wenigsten erwarten
  • Soweit ich weiß, gibt es in Pascal etwas Ähnliches

Bearbeiten:

Das ist Pascal, nur um zu beweisen, dass dein Lehrer falsch ist

%Vor%     
Cephalopod 06.03.2011, 15:53
quelle
5

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.

    
Daniel 06.03.2011 15:55
quelle
2

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.

    
bnieland 06.03.2011 16:02
quelle
1

Ich fürchte, dein Lehrer hat Unrecht. Es ist eine gute Übung, einen Standardfall zu haben.

    
Bala R 06.03.2011 15:53
quelle
1

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.

    
Kosi2801 06.03.2011 15:55
quelle
-1

Es kommt wirklich darauf an. Wenn es keinen Standard gibt, brauchen Sie es nicht.

    
Quincy 06.03.2011 15:58
quelle