Formatierungsstil
„Es gibt viele, mancher wuerde sagen zu viele, sogenannte Bracing-Styles. Und das wichtigste was man dazu wissen muss ist, IMHO, dass es egal ist welchen man verwendet solange man den verwendet den ich verwende“ — Zoran Cutura
Die Festlegung der äußeren Form eines Programmes nennt man Formatierung. Sie sollte so erfolgen, daß das Programm möglichst übersichtlich aussieht. Es gibt aber unterschiedliche Ansichten darüber, wie das am besten geschieht.
Dieser Text empfiehlt eine bestimmte Formatierung. Erfahrene Programmierer können davon abweichen. Es ist aber wichtig, eine Art der Formatierung konsequent anzuwenden.
Einrückung
Wenn das erste sichtbare Zeichen einer Zeile nicht an der Position Null steht, sondern weiter rechts an der Position i, dann ist die Zeile um i Zeichen eingerückt. Das folgende Beispiel zeigt zwei Zeilen: Die erste ist nicht eingerückt und die zweite ist um zwei Leerzeichen eingerückt. Zur besseren Lesbarkeit wird unter den beiden Beispielzeilen ein Zeilenlineal abgedruckt.
Einrückung (zwei Beispielzeilen)###
###
01234567
Position
Da Tabulatorzeichen unterschiedlich interpretiert werden, sind sie zur portablen Einrückung unbrauchbar. Zur Einrückung werden deshalb ausschließlich Leerzeichen verwendet.
Zum Ausdruck und zur Anzeige von Quelltext sollte eine dicktengleiche Schrift verwendet werden, also eine Schrift, bei der alle Zeichen, einschließliche des Leerzeichens, die gleiche Breite haben.
Ein einzelnes Leerzeichen würde die Einrückung nicht immer deutlich erkennbar hervorheben, da auch die Position mancher Zeichen um etwa diese Breite schwanken können. Daher wird die Einrückung immer in Stufen von zwei Zeichenbreiten verändert.
In vielen Programmiersprachen gibt es Klammern oder klammerartige Strukturen, die ineinander verschachtelt werden können.
Die Einrückung soll helfen, leicht zu erkennen, welche Struktur wie tief verschachtelt ist, wo sie beginnt und wo sie endet.
Wenn ein Zeichen in j Klammerpaaren enthalten ist, dann hat es die Verschachtelungstiefe j.
In den folgenden vier Zeilen hat das Zeichen "x" beispielsweise jeweils die Verschachtelungstiefe Null, Eins, Zwei, Drei bzw. Vier.
Verschachtelungstiefe (fuenf Beispiele)0 ---x---( --- )
1 ---( x )---
2 ---[]---(-[]--{ x--- })---
3 ---( ---( ---( ---( ---( --- )--- )-x- )--- )--- )
4 ---[]---[]---[ []]---[ [ [ [ [] ]]][ [ [] ]][ [ [ x ]][ [] ]]]
Die Verschachtelungstiefe des Zeichens "x" ist in den Beispielen nicht immer auf den ersten Blick zu erkennen. Die folgende Grundregel der Einrückung soll dabei helfen.
Die Verschachtelungstiefe des ersten sichtbaren Zeichens einer Zeile bestimmt die Einrückung der Zeile.
Zu dieser Formatierung paßt es, wenn nach einer öffnenden Klammer und vor einer schließenden Klammer ein Leerzeichen gemacht wird, weil sich dann eine einheitliche Ausrichtung des in den Klammern enthaltenen ergibt.
Würde kein Leerzeichen nach einer öffnenden Klammer stehen oder würde um mehr oder weniger als um zwei Zeichen eingerückt werden, würden in den Klammern enthaltene Textteile nicht untereinander ausgerichtet beginnen. Die Abbildungen zeigen dies für das Beispiel des Ausdrucks "( 2 + 3 + 4 )".
Genau ein Leerzeichen nach öffnender Klammer (einheitlich)( 2 +
3 +
4 )
01234567
PositionKein Leerzeichen nach öffnender Klammer (uneinheitlich)(2 +
3 +
4 )
01234567
PositionEinrueckung mit genau drei Leerzeichen (uneinheitlich)( 2 +
3 +
4 )
01234567
Position
Nun soll die Ermittlung der Einrückung anhand der Verschachtelungstiefe noch einmal im Detail erklärt werden.
Das erste Beispiel zeigt eine Zeile mit Einrückung Null. Zwar enthält sie verschachtelte Klammerpaare, doch maßgeblich ist nur die Verschachtelung des ersten Zeichens. Da das Zeichen "x" nicht in irgendwelchen Klammerpaaren enthalten ist, wird es auch nicht eingerückt. In der folgenden Abbildung steht unter jedem Zeichen seine Verschachtelungstiefe.
Verschachtelung A (Beispiel)x--( ---( --- )--- )-
000011111222222111110
Verschachtelungstiefe
Eine Klammer selber hat stets noch die Verschachtelungstiefe des vorherigen Zeichens. Eine Klammer verändert zwar die Verschachtelungstiefe, aber diese Änderung wird erst ab dem nächsten Zeichen wirksam. Da die erste Klammer in dem folgenden Beispiel die Verschachtelungstiefe Null hat, wird auch diese Zeile nicht eingerückt.
Verschachtelung B (Beispiel)( x--[ y--- ]z-- )---
011111222222211111000
Verschachtelungstiefe
Wenn nun aber die Zeile aus dem Beispiel „Verschachtelung B“ auf zwei Zeilen umbrochen wird, dann wird eine Einrückung nötig. Das Zeichen "x" hat Verschachtelungstiefe Eins, da es in einem Klammerpaar enthalten ist, nämlich den runden Klammern. Also wird bei Beginn einer neuen Zeile mit dem Zeichen "x" um zwei Leerzeichen eingerückt.
Die Zahlenangabe in der letzten Zeile der Abbildung ist ab jetzt nicht mehr die Verschachtelungstiefe. Es handelt sich ab jetzt um ein „Zeilenlineal“, das helfen soll, die Tiefe der Einrückung leicht abzulesen.
Verschachtelung C (Beispiel)(
x[ y ]z )
01234567
Position
Die öffnende eckige Klammer hat ebenfalls Verschachtelungstiefe Eins, denn eine Klammer hat immer die Verschachtelungstiefe des vorangehenden Zeichens, so daß bei Beginn einer neuen Zeile mit der öffnenden eckigen Klammer auch um zwei Zeilen einzurücken ist.
Verschachtelung D (Beispiel)( x
[ y ]z )
01234567
Position
Wird aber eine neue Zeile mit dem Zeichen "y" begonnen, so muß um zwei Leerzeichenpaare eingerückt werden, da dieses Zeichen die Verschachtelungstiefe Zwei hat.
Verschachtelung E (Beispiel)( x[
y ]z )
01234567
Position
Das gleiche gilt auch wieder für die schließende eckige Klammer.
Verschachtelung F (Beispiel)( x[ y
]z )
01234567
Position
Nach der schließenden eckigen Klammer vermindert sich die Verschachtelungstiefe wieder um Eins.
Verschachtelung G (Beispiel)( x[ y ]
z )
01234567
Position
Die Verschachtelungstiefe des Zeichens "z" gilt auch noch für die nachfolgende runde Klammer.
Verschachtelung H (Beispiel)( x[ y ]z
)
01234567
Position
Die Regel zum Einrücken macht keine Vorschrift darüber, wann eine neue Zeile begonnen werden muß. Sie sagt nur, wie dann eingerückt werden soll, wenn eine neue Zeile begonnen wurde.
Alle Einrückungen auf einmal kann man im Beispiel „Verschachtelung K“ sehen, wo jedes Zeichen auf einer Zeile für sich steht.
Verschachtelung K (Beispiel)(
x
[
y
]
z
)
01234567
Position
Übungsaufgabe Unter jedes Zeichen des folgenden Textes soll seine Verschachtelungstiefe geschrieben werden.
Verschachtelung L (Uebungsaufgabe)( a( b( c )d( e )f( g )h( i j k l )m( n )o( q( r )s( t ))))
Verschachtelungstiefe
Übungsaufgabe Der folgende Text soll so formatiert werden, daß alle mit dem Zeichen "^" gekennzeichneten Zeichen einen neue Zeile beginnnen, die jeweils nach der obigen Grundregel eingerückt werden soll. Ansonsten darf nichts an dem Text verändert werden.
Verschachtelung M (Uebungsaufgabe)( a( b( c )d( e )f( g )h( i j k l )m( n )o( q( r )s( t ))))
^ ^ ^ ^^ ^ ^ ^ ^ ^ ^ ^^ ^^