Hallo Oliver,
Und wie interpretierst Du folgende Aussage von Martin?
Die öffnende Klammer am Zeilenende ist so ziemlich das übelste, was mir einfällt. Da erkenne ich auf Anhieb nämlich nicht, ob das nach dem if eine einzelne Anweisung oder ein Block ist.
Ganz einfach: Ich halte es mit der Blockbildung nicht so konsequent. Wenn die Anweisung nach dem if oder nach dem else z.B. nur aus einer einzigen Zuweisung besteht, verzichte ich auf die Klammern. Man mag das von mir aus kritisieren, aber bei kurzen, leicht zu erfassenden Anweisungen finde ich es übersichtlicher als sie nochmal zu klammern.
Aber noch mal zu Martin: Das Ende des Blocks erkennst Du immer an der geschlossenen geschweiften Klammer UND der aufgehobenen Einrückung.
Ja. Aber leider habe ich schon oft Quellcodes in die Finger gekriegt, in denen die Anweisungsblöcke und die Einrückung schon von vornherein nicht mehr gepasst haben oder -noch schlimmer- wo scheinbar willkürlich eingrückt wurde. Meistens dann mit der Bemerkung "Kuck dir das doch bitte mal an, ich hab den Eindruck, da stimmt irgendwas nicht".
Deswegen ziehe ICH die Symbole, die den Block als solchen markieren, nach vorn an den Zeilenanfang. Und zwar öffnende und schließende Klammer genau auf die gleiche Einrückungsebene.
Zugegeben, ich denke hier an VB, was ich vom Sprachdesign für eine der schlechteren Sprachen halte. Aber hier würde auch niemand auf die Idee kommen, das "then" in eine neue Zeile zu schreiben und mit dem "if" auf eine Stufe zu setzen.
Doch. Als ich vor Jahren noch Pascal programmiert habe, hab ich das so gemacht. Pascal-Code ist schön, weil man sehr vieles in Worten (anstatt Symbolen wie in C) lesen kann. Und da habe ich meine Schreibweise an die unterbewusste Strukturierung der Umgangssprache angelehnt, so wie z.B.
WENN die Ampel auf Grün schaltet,
DANN fahr los.
Hier ordnet man das "DANN" doch instinktiv auch dem nachfolgenden Hauptsatz zu, auch wenn ich es jetzt ohne Zeilenumbruch geschrieben hätte.
Genauso -um wieder den Sprung zur Programmiersprache zu machen- verfahre ich bei mehreren Teilausdrücken in einer Klammer. Wenn alle Teilausdrücke kurz und übersichtlich sind, schreib ich alles in eine Zeile. Wenn ich die Teilausdrücke aber über mehrere Zeilen splitte, dann etwa so:
if (a>1
&& b>2
&& u<4)
{ n = a*b + u;
u = 0;
}
Oft sehe ich, dass eine Zeile dann mit dem Operator (hier &&) endet und die folgende Zeile dadurch wie eine eigenständige (evtl. sinnlose) Anweisung aussieht. Das finde ich dann auch nicht gerade empfehlenswert.
Just my two cents.
They might as well be worth five, who knows? ;)
So long,
Martin