Zum Thema formatieren
* eine einzige Leerzeile zwischen funktionalen Blöcken ist ok.
Die Leerzeile sorgt für eine optische Gruppierung und leitet
dich beim Lesen. Sie sagt dir: hier ist ein Gedankengang zu Ende
und eine neuer Gedanke beginnt.
Das macht EINE Leerzeile.
Viele Leerzeilen hintereinander hingegen bringen nichts. Sie ziehen
den Code nur in die Länge und bewirken das Gegenteil. Die Übersicht
steigt nicht, sondern sie nimmt ab. Eben weil der Code unnötigerweise
in die Länge gezogen wird.
* nach jeder öffnenden Klammer { beginnt ein neuer sog. Code-Block.
um den Code-Block erkennen zu können ohne jedesmal die
einschliessenden { } suchen zu müssen, wird der Block eingerückt.
Nach einer { wird der zum Block gehörende Code um 2 Leerzeichen
eingerückt. Diese Einrückung wird erst wieder mit der schliessenden }
wieder aufgehoben. Die schliessende } steht auf der selben
Einrücktiefe wie entweder die { selber oder wie die Anweisung in der
die { zu finden ist. Auf die Art braucht man nur immer einfach nur
in derselben Spalte nach oben oder nach unten im Code zu gehen um
die jeweils korrespondierende { oder } zu finden und zu sehen, welchen
Code die { } in einen Codeblock einschliessen.
Die erste Einrückversion sieht so aus
1 | int main()
|
2 | {
|
3 | // einrücken
|
4 |
|
5 | ...
|
6 |
|
7 | while( 1 )
|
8 | {
|
9 | // einrücken
|
10 |
|
11 | if( PIND & ( 1 << PD2 ) )
|
12 | {
|
13 | // einrücken
|
14 | PORTB = 5;
|
15 | // Block ist zu Ende, also für die } ausrücken
|
16 | }
|
17 | else
|
18 | {
|
19 | // einrücken
|
20 | PORTB = 8;
|
21 | // ausrücken
|
22 | }
|
23 |
|
24 | // Block zu Ende, es fehlt noch eine } für das while
|
25 | // also ausrücken
|
26 | }
|
27 |
|
28 | // und es fehlt noch ein } für die { nach dem int main()
|
29 | }
|
die andere Version sieht so aus (jetzt ohne die blödsinnigen
einrücken/ausrücken Kommentare. Die schreibt man natürlich nicht
wirklich)
1 | int main()
|
2 | {
|
3 | ...
|
4 |
|
5 | while( 1 ) {
|
6 |
|
7 | if( PIND & ( 1 << PD2 ) ) {
|
8 | PORTB = 5;
|
9 | }
|
10 | else {
|
11 | PORTB = 8;
|
12 | }
|
13 | }
|
14 | }
|
Die Variante, in der die öffnende { auf derselben Zeile steht (mit
Ausnahme nach einem Funktionskopf) ist etwas platzsparender als die
Variante, in der die { ihre eigene Zeile bekommt. Aber ansonsten sind
die Dinge gleichwertig: Nach einem { wird eingerückt. Die schliessende }
wird wieder ausgerückt.
Am Ende einer Funktion muss die schliessende } wieder am linken Rand
stehen. Sonst stimmt irgendwo mit den { und } etwas nicht.
Aber auf keinen Fall kann es sein, dass eine Anweisung am linken Rand
anfängt.