Home » Object Pascal » Styleguide

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:

  1. Nach dem Copyright-Kommentarblock, der Package-Deklaration und dem Import-Abschnitt
  2. Zwischen Klassendeklarationen
  3. 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:

  1. zwischen einem Methodennamen und seiner öffnenden Klammer
  2. vor oder nach einem . (Punkt)-Operator
  3. zwischen einem einstelligen Operator und seinem Operanden
  4. zwischen einer Typumwandlung (cast) und dem Ausdruck, der umgewandelt werden soll
  5. nach einer öffnenden Klammer oder vor einer schließenden Klammer
  6. nach einer öffnenden eckigen Klammer [ oder vor einer schließenden eckigen Klammer ]
  7. 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