Sollten wir die Standard-Groß- / Kleinschreibung in der switch-Anweisung brechen?

8

Nehmen wir diesen Beispielcode ( Quelle ) an:

%Vor%

Sollten wir eine break; im letzten default -Fall verwenden? Wenn ich es entferne, sehe ich das gleiche Verhalten des Programms. Allerdings habe ich gesehen, dass andere Beispiele auch break; im Fall default verwenden.

Warum? Gibt es einen Grund?

    
gsamaras 01.10.2014, 10:11
quelle

7 Antworten

24
  

Sollen wir eine Pause machen? im letzten Standardfall?

From Die Programmiersprache C - Zweite Ausgabe (K & amp; R 2):

Kapitel 3.4 Switch

  

Als eine gute Form, legen Sie eine Pause nach dem letzten Fall (der Standard   hier), obwohl es logisch unnötig ist. Eines Tages, wenn ein anderes   Fall wird am Ende hinzugefügt, dieses bisschen defensive Programmierung wird   rette dich.

    
Keine Lust 01.10.2014, 10:15
quelle
5

Zum einen sollten Sie darüber nachdenken, warum wir break in der switch-Anweisung verwenden sollten. Schauen Sie sich diese no-breaking switch-Anweisung an.

%Vor%

Angenommen input == 1 . Das Programm wird natürlich playgame() aufrufen, aber da es kein break gibt, beendet das Programm nicht switch , sondern ruft loadgame() , playmultiplayer() , zwei printf s nacheinander auf.

Um dies zu vermeiden, verwenden wir break .

%Vor%

Wegen break beendet das Programm die switch -Anweisung, bevor Codes von case 2 ausgeführt werden. Das ist unser erwartetes Ergebnis, nicht wahr?

Dein Schalter ist dies:

%Vor%

Da es nach case keine default s gibt, gibt es keinen Effekt, ob Sie break auf default schreiben oder nicht. Allerdings können Sie leicht einen neuen Fall schreiben.

%Vor%

Es ist häufige Fehler in C / C ++. Wenn Sie nach 5 Jahren ein neues Feature hinzufügen und es komplett vergessen, wird es zu einem sehr fehlerhaften Bug. Einige moderne Sprachen (z. B. C #, ...) sogar verbieten switch-case ohne break oder return .

Fazit: Es gibt kein Problem in der Syntax , aber es ist eine sehr schlechte Praxis und die Verwendung von break wird dringend empfohlen.

    
ikh 01.10.2014 10:25
quelle
3

Es hängt davon ab, Wie Standardfall geschrieben wird .

Im folgenden Fall ist break erforderlich.

%Vor%     
Jeyaram 01.10.2014 10:16
quelle
2

Es gibt keinen Unterschied , wenn Sie weglassen oder die break -Anweisung belassen. Es ist Geschmackssache.

Es ist jedoch eine gute Übung, die break-Anweisung aus verschiedenen Gründen zu schreiben.

Sehen Sie sich Programmiereraustausch an.

    
Igor 01.10.2014 10:13
quelle
1

Eigentlich brauchen Sie die Pause nicht im Standardfall. Und bei der Überprüfung ist es genauso, wenn Sie im Standardfall keine Unterbrechung haben.

Aber meiner Meinung nach sollten Sie die Pause im Standardfall haben, weil:

  1. Es macht Ihren Code in jedem Fall ein Formular.
  2. Es ist gut mit aktuellen Compiler aber vielleicht nicht mit bestimmten anderen Compiler. Also solltest du es gut machen, um Probleme aus der Zukunft zu vermeiden.
Le Dong Thuc 01.10.2014 10:26
quelle
1

Pause scheint optional zu sein

break scheint in diesem Fall optional zu sein. und auch dein Code wird fast funktionieren.

Allerdings

In vielen Situationen verbessert das Hinzufügen von Unterbrechungen Ihren Code und schützt Ihren Code vor Fehlern / Ausnahmen.

es erhöht die Lesbarkeit, Konsistenz und mehr fehlerfrei.

  

Eine Sprache wie C # -Bruch (oder eine andere Kontrollflussanweisung, die den Fall verlässt) ist nach der letzten Alternative technisch notwendig. dan04

für bessere Programmierpraktiken schlage ich vor, dass man es benutzen sollte.

Siehe excellent post für weitere Details.

>     
Md. Alamin Mahamud 15.11.2015 03:22
quelle
0

Wenn default case zuletzt ist, dann break Anweisung hat keine Verwendung. Wenn es vor einem anderen case ist, dann ist break erforderlich. da wir normalerweise default am Ende setzen, können Sie es weglassen ..

    
Rustam 01.10.2014 10:18
quelle

Tags und Links