Wie am besten öffende geschweifte Klammern anorden?
-
Hi,
ich habe bemerkt, dass es unterschiedliche Vorgehensweisen gibt, die öffnende geschweifte Klammer anzuordnen:
A:
void Methode(){ ... }
B:
void Methode() { ... }
Beide Varianten unterscheiden sich in der Art wie die öffende geschweifte Klammer gesetzt wird.
Bei Vorgehensweise A ist von der schließenden Klammer (bei ordnungsgemäßer Einrückung) sofort zu erkennen, welche Anweisung den Klammernblock zugrunde liegt. (Im Beispiel eine Methode). Möchte man jedoch die dazugehörige geöffnete Klammer finden ist es aufwendiger, weil der Blick rechts die geöffnete Klammer finden muss.
Bei Vorgehensweise B ist die zugehörige öffende geschweifte Klammer (bei ordnungsgemäßer Einrückung) sehr leicht zu erkennen. Allerdings muss die Anweisung welche dem Klammernblock zugrunde liegt in der darüberliegenden Zeile gesucht werden. Hierdurch ist die Zusammengehörigkeit des Klammernblocks zu der zugrunde liegenden Anweisung etwas schwerer zu erkennen.
Ich würde intuitiv die Variante B verwenden, weil so viel leichter überprüft werden kann, dass zu jeder geschlossenen Klammer eine öffende existiert. Wenn ich einen Klammerfehler bei Verwendung der Variante A suchen muss, fällt es mir deutlich schwerer. Dennoch sehe ich sehr oft die Variante A in fremden Code.
Welche ist die häufier verwendete Variante?
Was ist die "bessere" Variante?
Gibt es noch weitere Argumente für oder gegen eine der Varianten?
-
MisterX schrieb:
Was ist die "bessere" Variante?
Gibt es noch weitere Argumente für oder gegen eine der Varianten?Dazu gibt es schon tausend und einen Flamewar sowie diverse Styleguides.
In der Praxis wirst du beides verwenden – je nachdem welcher Stil bei deinem aktuellen Projekt gerade verwendet wird. Und es wird keinen ernsthaften Unterschied machen, weil deine IDE/dein Editor mit beiden Stilen besser Klammern zählen kann als du.
-
nman schrieb:
MisterX schrieb:
Was ist die "bessere" Variante?
Gibt es noch weitere Argumente für oder gegen eine der Varianten?Dazu gibt es schon tausend und einen Flamewar sowie diverse Styleguides.
In der Praxis wirst du beides verwenden – je nachdem welcher Stil bei deinem aktuellen Projekt gerade verwendet wird. Und es wird keinen ernsthaften Unterschied machen, weil deine IDE/dein Editor mit beiden Stilen besser Klammern zählen kann als du.
Also einfach bei eigenen Projekten nehmen was man möchte und bei fremden Projekten es so machen wie es schon ist?
-
MisterX schrieb:
nman schrieb:
MisterX schrieb:
Was ist die "bessere" Variante?
Gibt es noch weitere Argumente für oder gegen eine der Varianten?Dazu gibt es schon tausend und einen Flamewar sowie diverse Styleguides.
In der Praxis wirst du beides verwenden – je nachdem welcher Stil bei deinem aktuellen Projekt gerade verwendet wird. Und es wird keinen ernsthaften Unterschied machen, weil deine IDE/dein Editor mit beiden Stilen besser Klammern zählen kann als du.
Also einfach bei eigenen Projekten nehmen was man möchte und bei fremden Projekten es so machen wie es schon ist?
So würde ich es machen, sonst könnte man eventuell unbehagen der Kollegen ernten
-
Definitiv B. A ist unuebersichtlich as ****.
-
A machen wirklich nur Idioten.
-
MisterX schrieb:
Also einfach bei eigenen Projekten nehmen was man möchte und bei fremden Projekten es so machen wie es schon ist?
Ja, ich halte das für den pragmatischsten Weg.
-
Wobei man denke ich schon sagen kann, dass in C/C++/C# Variante B klar öfter genutzt wird, und in Java Variante A.
-
cooky451 schrieb:
Wobei man denke ich schon sagen kann, dass in C/C++/C# Variante B klar öfter genutzt wird, und in Java Variante A.
Zufall? Unwahrscheinlich
-
cooky451 schrieb:
Wobei man denke ich schon sagen kann, dass in C/C++/C# Variante B klar öfter genutzt wird, und in Java Variante A.
Sagen kann man viel, ob es stimmt oder auch nur plausibel ist, ist dann die andere Frage. Im Falle von C melde ich da Zweifel an: Kernighan und Ritchie haben Variante A propagiert.
-
Bashar schrieb:
Im Falle von C melde ich da Zweifel an
Ich kann da natürlich nur aus eigener Erfahrung sprechen, aber da so ziemlich 90% des C Codes den ich so lese (stackoverflow, hier, andere Beispielcodes, Bibliotheken, ...) die Variante B benutzen, ist das schon recht akkurat denke ich.
Edit: Auch wenn es im C Forum gerade eine Flut von Leuten zu geben scheint die A nutzen.
-
Ich verwende A.
-
Ich benutze A weil B mir schon immer unübersichtlich vorkam.
Sind es dann auch noch mehrere verschachtelte Ebenen wird dann
for( blah...) { ... } // for( blah...)
draus.
-
Bashar schrieb:
cooky451 schrieb:
Wobei man denke ich schon sagen kann, dass in C/C++/C# Variante B klar öfter genutzt wird, und in Java Variante A.
Sagen kann man viel, ob es stimmt oder auch nur plausibel ist, ist dann die andere Frage. Im Falle von C melde ich da Zweifel an: Kernighan und Ritchie haben Variante A propagiert.
Bei Funktionsdefinitionen haben sie aber Version B benutzt.
-
Ich nutze B weil man gleich sieht welche Klammern zusammengehören. Na gut, alle IDEs zeigen das mittlerweile auch optisch an. Ich habe aber auch schon A in C++ gesehen, weiß jetzt leider nicht mehr wo das war, aber war was bekanntes.
Soll jeder machen wie er es schön findet und ansonsten das übernehmen was schon da ist. Das Spiel kann man dann noch weiter treiben mit Pre-/Oostfixen bei Membervariabeln. Das Bezeichnen von Methodennamen mit Underscore oder Großbuchstaben usw.
Also ich persönlich verwende viel vom Googlestyle, aber ich arbeite ja nur mit meinem Code und das auch allein.
-
cooky451 schrieb:
Bashar schrieb:
Im Falle von C melde ich da Zweifel an
Ich kann da natürlich nur aus eigener Erfahrung sprechen, aber da so ziemlich 90% des C Codes den ich so lese (stackoverflow, hier, andere Beispielcodes, Bibliotheken, ...) die Variante B benutzen, ist das schon recht akkurat denke ich.
Alle GNU Projekte und daran angelehnt viele weitere Open Source Projekte richten sich nach den GNU Styleguides und das ist dann eine Variante von B, insofern liegt es schlichtweg daran, daß du dir eben überwiegend nur GNU Code bzw. Open Source Code anschaust und entsprechend ist dann auch deine Sichtweise darüber, faktisch ist es also eine Selbsttäuschung.
Da ist nicht schlimmes dabei, wer schaut wohl nicht in Open Source Code um zu sehen, wie es die anderen machen?
Im Prinzip ist das wie bei Apple Usern, die sich ein Apple Produkt kaufen, dann sich nur über Apple Produkte informieren und dann später glauben, weil sie sich in der Welt der Apple User bewegen, das jeder Apple benutzen würde.Tja und was die Open Source Coder betrifft, die machen es nur nach B, weil sie eben sich selbst an den GNU Styleguides für OS Projekte orientieren wollen.
Insofern ist dieser Stil bei Open Source Projekten, insbesonedere diese, die in C oder C++ geschrieben sind, stark vertreten.http://en.wikipedia.org/wiki/GNU_Coding_Standards
Faktisch läßt dies aber keine Aussage darüber zu, wie es der Rest der Welt macht.
Früher habe ich intuitiv B genommen, heutzutage verwende ich A.
A hat insbesondere auch beim Buchdruck einen enormen Vorteil, weil nicht so viele Zeilen für geschweifte Klammern verschwendet wird.
In meinem C++ Buch wird deswegen übrigens auch Variante A verwendet.
-
Siehe übrigens auch:
-
Bashar schrieb:
cooky451 schrieb:
Wobei man denke ich schon sagen kann, dass in C/C++/C# Variante B klar öfter genutzt wird, und in Java Variante A.
Sagen kann man viel, ob es stimmt oder auch nur plausibel ist, ist dann die andere Frage. Im Falle von C melde ich da Zweifel an: Kernighan und Ritchie haben Variante A propagiert.
Guckst du hier:
-
Ich kenne kaum Non-GNU-Projekte die GNU-Style verwenden. Dafür eine Menge Texte darüber, wie furchtbar GNU-Style ist.
-
bei kurzen Bedingungen sehe ich beide recht gleich auf. Der Editor übernimmt eh die nötigen Hervorhebungen.
Nur wenn die Bedingung länger wird und man sie daher umbricht, finde ich Variante A aber eher unübersichtlich
Von daher bevorzuge ich B. Da ist Kopf und Körper klar getrennt
Wobei das eh egal ist, was ich denke, da ich so oder so verwenden muss, was das Projekt vorschreibt.
Und von den Regeln, die mir aufgezwungen werden ist der Einrückungsstil noch der, mit dem ich mich am ehesten anfreunden kann