Styleguide
Verwendung des Leerzeichens
Leerzeilen
Leerzeilen können die Lesbarkeit erhöhen, indem Code-Abschnitte gebildet werden, die logisch zusammengehören. Leerzeilen sollten außerdem an folgenden Stellen verwendet werden:
- Nach dem Copyright-Kommentarblock, der Package-Deklaration und dem Import-Abschnitt
- Zwischen Klassendeklarationen
- Zwischen Methodendeklarationen
Leerzeichen
Die Delphi-Sprache ist eine sehr saubere, einfach zu lesende Sprache. Grundsätzlich brauchen Sie nicht viele Leerzeichen in Ihren Code einfügen, um Zusammenhänge aufzubrechen. Die nächsten paar Abschnitte geben Ihnen ein paar Richtlinien, die beim Einfügen von Leerzeichen in den Code zu befolgen sind.
Leerzeichen sollten nicht verwendet werden:
- zwischen einem Methodennamen und seiner öffnenden Klammer
- vor oder nach einem . (Punkt)-Operator
- zwischen einem einstelligen Operator und seinem Operanden
- zwischen einer Typumwandlung (cast) und dem Ausdruck, der umgewandelt werden soll
- nach einer öffnenden Klammer oder vor einer schließenden Klammer
- nach einer öffnenden eckigen Klammer [ oder vor einer schließenden eckigen Klammer ]
- vor einem Strichpunkt
Beispiele korrekter Verwendung:
function TMyClass.MyFunc(var Value: Integer); MyPointer := @MyRecord; MyClass := TMyClass(MyPointer); MyInteger := MyIntegerArray[5];
Beispiele falscher Verwendung:
function TMyClass.MyFunc( var Value: Integer ) ; MyPointer := @ MyRecord; MyClass := TMyClass ( MyPointer ) ; MyInteger := MyIntegerArray [ 5 ] ;
Einrückungen
Sie sollten alle Einrückungsebenen immer zwei Leerzeichen einrücken. In anderen Worten: Die erste Einrückungsebene ist zwei Zeichen, die zweite Ebene vier Zeichen, die dritte sechs Zeichen eingerückt usw. Verwenden Sie niemals den Tabulator.
Es gibt einige Ausnahmen. Die reservierten Wörter unit, uses, type, interface, implementation, initialization und finilization sollten bündig mit dem Rand sein. Das letzte end-Statement und das Ende einer Unit sollten ebenfalls bündig mit dem Rand sein. In der Projektdatei sollten das Wort program, der Haupt-Begin-End-Block bündig mit dem Rand sein. Der Code innerhalb des begin..end-Blocks sollte mindestens zwei Stellen eingerückt sein.
Zeilenfortsetzung
Zeilen sollten auf 80 Zeichen beschränkt sein. Zeilen, die länger als 80 Zeichen sind, sollten in eine oder mehrere Fortsetzungszeilen – wie nötig – aufgeteilt werden. Alle fortgesetzten Zeilen sollten von der Ausrichtung und Einrückung der ersten Zeile des Statements zwei Zeichen eingerückt sein. Platzieren Sie begin-Statements immer in einer eigenen Zeile.
Beispiele:
// KORREKT function CreateWindowEx(dwExStyle: DWORD; lpClassName: PChar; lpWindowName: PChar; dwStyle: DWORD; X, Y, nWidth, nHeight: Integer; hWndParent: HWND; hMenu: HMENU; hInstance: HINST; lpParam: Pointer): HWND; stdcall; // KORREKT if ((X = Y) or (Y = X) or (Z = P) or (F = J) then begin S := J; end;
Brechen Sie nie eine Zeile zwischen einem Parameter und seinem Typ um, außer eine durch Komma getrennte Liste, dann brechen Sie höchstens vor dem letzten Parameter um, so dass der Typname der nächsten Zeile folgt. Variablendeklarationen enthalten kein Leerzeichen zwischen dem Doppelpunkt und der Variablen. Ein einzelnes Leerzeichen sollte dem Doppelpunkt vor dem Typnamen folgen.
// KORREKT procedure Foo(Param1: Integer; Param2: Integer); // FALSCH procedure Foo( Param :Integer; Param2:Integer );
Eine Fortsetzungszeile sollte nie mit einem Operator beginnen, der zwei Argumente hat. Vermeiden Sie den Zeilenumbruch an Stellen, an denen normalerweise kein Leerzeichen steht, wie z. B. zwischen einem Methodennamen und seiner öffnenden Klammer oder zwischen einem Array-Namen und seiner öffnenden eckigen Klammer. Wenn Sie die Zeile unter diesen Umständen umbrechen müssen, dann ist eine mögliche Stelle nach der öffnenden Klammer eines Methodennamens. Platzieren Sie niemals ein begin-Statement in einer Zeile zusammen mit anderem Code.
Beispiele:
// FALSCH while (LongExpression1 or LongExpression2) do begin // DoSomething // DoSomethingElse; end; // RICHTIG while (LongExpression1 or LongExpression2) do begin // DoSomething // DoSomethingElse; end; // RICHTIG if (LongExpression1) or (LongExpression2) or (LongExpression3) then