Ich bevorzuge die Version ohne Klammern wo möglich.
Die folgende Erklärung ist langwierig. Bitte bei mir tragen. Ich gebe einen zwingenden Grund für mich, diesen Stil zu bevorzugen. Ich werde auch erklären, warum ich denke, dass das übliche Gegenargument nicht zutrifft.
(Fast-) Leerzeilen sind Verschwendung
Der Grund dafür ist, dass die schließende Klammer eine zusätzliche Codezeile erfordert - und je nach Stil auch die öffnende Klammer. 1
Ist das eine große Sache? Oberflächlich gesehen nein. Schließlich setzen die meisten Leute auch Leerzeilen in ihren Code, um logisch leicht unabhängige Blöcke zu trennen, was die Lesbarkeit erheblich verbessert.
Ich hasse es jedoch, vertikalen Raum zu verschwenden. Moderne Monitore haben tatsächlich viel horizontalen Raum. Der vertikale Raum ist jedoch immer noch sehr, sehr begrenzt (es sei denn, Sie verwenden einen aufrechten Monitor, was nicht ungewöhnlich ist). Dieser begrenzte vertikale Raum ist ein Problem: Es ist allgemein anerkannt, dass einzelne Methoden so kurz wie möglich sein sollten und dass die entsprechenden Klammern (oder andere Blockbegrenzer) nicht höher als eine Bildschirmhöhe sein sollten, damit Sie den gesamten Block ohne Klammern sehen können Scrollen.
Dies ist ein grundlegendes Problem: Sobald Sie nicht mehr den gesamten Block auf Ihrem Bildschirm sehen können, wird es schwierig, ihn zu erfassen.
Infolgedessen verabscheue ich redundante Leerzeilen. Während einzelne Leerzeilen für die Abgrenzung unabhängiger Blöcke von entscheidender Bedeutung sind (sehen Sie sich nur das Erscheinungsbild dieses Textes an), sind aufeinanderfolgende Leerzeilen in meinem Buch ein sehr schlechter Stil (und meiner Erfahrung nach sind sie in der Regel ein Zeichen für unerfahrene Programmierer).
Ebenso sollten Leitungen, die einfach eine Klammer halten und die eingespart werden könnten, sein. Ein Block mit einer Anweisung, der durch geschweifte Klammern begrenzt ist, verschwendet ein bis zwei Zeilen. Bei nur 50 Zeilen pro Bildschirmhöhe fällt dies auf.
Klammern wegzulassen schadet vielleicht nicht
Es gibt nur ein Argument gegen das Weglassen von geschweiften Klammern: Jemand wird später eine weitere Anweisung zum betreffenden Block hinzufügen und das Hinzufügen der geschweiften Klammern vergessen, wodurch die Semantik des Codes versehentlich geändert wird.
Dies wäre in der Tat eine große Sache.
Aber meiner Erfahrung nach ist es nicht. Ich bin ein schlampiger Programmierer. und doch kann ich in meinem Jahrzehnt der Programmiererfahrung ehrlich sagen, dass ich nicht einmal vergessen habe, die geschweiften Klammern hinzuzufügen, wenn ich einem Singleton-Block eine zusätzliche Anweisung hinzufüge.
Ich finde es sogar unplausibel, dass dies ein häufiger Fehler sein sollte: Blöcke sind ein grundlegender Bestandteil der Programmierung. Block Level Resolution und Scoping ist ein automatischer, tief verwurzelter mentaler Prozess für Programmierer. Das Gehirn tut es einfach (ansonsten wäre es viel schwieriger, über das Programmieren nachzudenken). Es ist keine zusätzliche mentale Anstrengung erforderlich, um sich daran zu erinnern, die geschweiften Klammern gesetzt zu haben: Der Programmierer erinnert sich auch, die neu hinzugefügte Anweisung schließlich korrekt eingerückt zu haben ; der programmierer hat also schon mental verarbeitet, dass es sich um einen block handelt.
Jetzt sage ich nicht , dass das Weglassen von Klammern keine Fehler verursacht. Was ich sage ist, dass wir auf die eine oder andere Weise keine Beweise haben. Wir wissen einfach nicht, ob es Schaden anrichtet.
Solange mir also niemand aussagekräftige Daten zeigen kann, die aus wissenschaftlichen Experimenten stammen und zeigen, dass dies tatsächlich ein Problem in der Praxis ist, bleibt diese Theorie eine „ einfache Geschichte “: eine sehr überzeugende Hypothese, die noch nie auf den Prüfstand gestellt wurde darf nicht als Argument verwendet werden.
1 Dieses Problem wird manchmal gelöst, indem Sie alles - einschließlich der geschweiften Klammern - in dieselbe Zeile setzen:
if (condition)
{ do_something(); }
Ich glaube jedoch, es ist sicher zu sagen, dass die meisten Menschen dies verachten. Darüber hinaus hätte es die gleichen Probleme wie die Variante ohne Zahnspange, so dass es das Schlimmste von beiden Welten ist.