Betrachten Sie die folgenden zwei Schnipsel mit geschweiften Klammern:
switch (var) {
case FOO: {
x = x + 1;
break;
}
case BAR: {
y = y + 1;
break;
}
}
Ohne Zahnspange:
switch (var) {
case FOO:
x = x + 1;
break;
case BAR:
y = y + 1;
break;
}
Ich weiß, dass im Snippet mit geschweiften Klammern ein neuer Bereich erstellt wird, indem jeder Fall in geschweifte Klammern eingeschlossen wird. Wenn jedoch nicht für jeden Fall der neue Bereich benötigt wird (dh keine Variablennamen wiederverwendet werden), gibt es irgendeine Leistungsbeeinträchtigung für die Verwendung der geschweiften Klammern mit einem Fall?
quelle
Wie wir wissen, sind Zahnspangen für Schalterfälle nicht erforderlich. Die Verwendung von Zahnspangen kann zu Verwirrung über den Umfang eines Falles führen.
Eine öffnende Klammer ist im Allgemeinen mit etwas Sinnvollem verbunden, wie dem Start einer Funktion oder dem Start einer Schleife oder dem Beginn der Klassendeklaration oder dem Beginn der Array-Initialisierung usw. Wir wissen, dass ein Fall aus dem Schalterblock ausbricht, wenn er auf eine Unterbrechung stößt Aussage. Die Verwendung von geschweiften Klammern scheint daher die Vorstellung eines anderen Fallbereichs für einen unwissenden Leser zu implizieren. Es ist daher besser, geschweifte Klammern zu vermeiden, um die Lesbarkeit der Programmierung zu verbessern.
dh wenn ich so etwas habe,
"Hallo von 1" wird gedruckt. Die Verwendung von geschweiften Klammern kann jedoch einen unwissenden Leser darauf hinweisen, dass der Fall mit '}' endet, da er bereits weiß, was geschweifte Klammern im Allgemeinen bei Schleifen, Methoden usw. bedeuten.
Da wir in 'C' Jump-to-Label-Anweisungen haben, wechselt das Steuerelement einfach zum Fall und setzt seine Ausführung fort. Mit diesem Verständnis ist es nur eine schlechte Praxis, geschweifte Klammern zu verwenden, wenn Sie Fälle für den Wechsel schreiben.
Technisch gesehen können Sie jeden Block Ihres Codes mit einem zusätzlichen Paar geschweifter Klammern umgeben, wenn Sie ihn mit gültiger Syntax verwenden. Die Verwendung von Zahnspangen im Schalter sieht zumindest für mich so schlecht aus, dass es ein anderes Gefühl zu geben scheint, als ich oben gesagt habe.
Mein Vorschlag: Vermeiden Sie einfach die Verwendung von umgebenden Klammern für Schalterfälle.
quelle
Mit Zahnspangen.
Es gibt so viele Dinge, die mit switch-Anweisungen schief gehen können, dass ich versuche, sie zu vermeiden, wo ich kann, dh
Die Verwendung von geschweiften Klammern ist eine Möglichkeit, um zu verhindern, dass Variablen absichtlich und versehentlich zwischen case-Anweisungen ausgetauscht werden
quelle
...case 1: int a = 10; break; case 2: int a = 11; break; ...
Kompiliert nicht. (getestet mit Oracle JDK 8)Diese Frage wird wahrscheinlich als "argumentativ" (BRACE WAR!) Geschlossen, aber was solls. Ich mag eigentlich die Zahnspangen nach den Fällen. Für mich sieht die hässliche Switch-Syntax eher wie der Rest der Sprachkonstrukte aus. (In diesem "Fall" gibt es keine Strafe für die Verwendung von Zahnspangen.)
quelle
Sie sagen, die geschweiften Klammern können weggelassen werden, da keine Variablennamen wiederverwendet werden. Ich gehe davon aus, dass Sie mit der Wiederverwendung von Variablennamen eine neue Variable desselben Typs deklarieren.
Die geschweiften Klammern sind tatsächlich am nützlichsten, um sicherzustellen, dass Sie nicht versehentlich dieselbe Variable in verschiedenen
case
s wiederverwenden . Sie deklarieren heute keine Variablen, aber jemand wird sie morgen hinzufügen und ohne die geschweiften Klammern ist der Code fehleranfällig.quelle
Ich würde keine Zahnspangen für Schaltergehäuse verwenden.
Die switch-Anweisung sieht schon ohne geschweifte Klammern barock genug aus.
Schaltergehäuse sollten sehr kurz sein. Wenn Sie Variablen deklarieren müssen, ist dies ein Zeichen dafür, dass Sie es falsch machen.
Nun geht es weiter mit der Pflege eines alten C-Codes, der Fälle mit mehr als 500 Zeilen umschaltet ...
quelle
Ich habe noch nie darüber nachgedacht. Ich habe die Klammern in einer case-Klausel nie gebraucht, kann also nicht wirklich erkennen, warum Sie sie brauchen würden. Persönlich gehe ich nicht auf die Idee "Es wird einfacher zu warten sein", das ist nur Müll, es wird einfacher zu warten sein, wenn der Code Sinn macht und dokumentiert ist.
Keine geschweiften Klammern ... weniger Syntax ist mehr
quelle