Home » Object Pascal » Styleguide

Styleguide

Namenskonventionen

Außer bei reservierten Wörtern und Direktiven, die in Kleinbuchstaben sind, sollten alle Pascal-Bezeichner InfixCaps (Gemischtschreibung) verwenden, was bedeutet, dass der erste Buchstaben ein Großbuchstabe und jedes in einem Bezeichner enthaltene Wort ebenso wie eingebettete Abkürzungen in Großbuchstaben sein sollten:

MyIdentifier
MyFTPClass

Die große Ausnahme dieser Regel ist der Fall der Header-Übersetzungen, die immer den Konventionen, die im Header benutzt werden, folgen sollten. Schreiben Sie z. B. WM_LBUTTONDOWN, nicht wm_LButtonDown.
Verwenden Sie außer in Header-Übersetzungen keine Unterstriche um Wörter zu trennen. Klassennamen sollten Substantive oder Sätze mit Substantiven sein. Interface- oder Klassennamen sind vom Ziel der Adverbbildung des Interfaces abhängig.
GUTE Typnamen:

  AddressForm, ArrayIndexOutOfBoundsException

SCHLECHTE Typnamen:

ManageLayout         // Satz mit Verb
delphi_is_new_to_me  // Unterstriche

Unit-Benennung

Verwenden Sie Gemischtschreibung (InfixCaps), wie zu Beginn des Abschnitts beschrieben. Beachten Sie auch den Abschnitt über Unit-Deklarationen.

Klassen-/Interface-Benennung

Verwenden Sie Gemischtschreibung (InfixCaps), wie zu Beginn des Abschnittes beschrieben. Beginnen Sie jede Typdeklaration mit einem großen T:

TMyType

Beachten Sie auch den Abschnitt über Klassen-/Interface-Deklarationen.

Bennennung von Attributen

Verwenden Sie Gemischtschreibung (InfixCaps), wie zu Beginn des Abschnittes beschrieben. Beginnen Sie jede Typdeklaration mit einem großen F. Deklarieren Sie alle Datentypen im private-Abschnitt, und verwenden Sie Properties oder Get- und Set-Methoden für den Zugriff darauf. Verwenden Sie z. B. den Namen GetSomething zur Benennung einer Funktion, die einen internen Attributnamen zurückgibt, und SetSomething für eine Prozedur, die diesen Wert setzt.
Verwenden Sie keine reine Großschreibung für Konstantennamen, außer an den Stellen, wo Header-Übersetzungen es verlangen.
Delphi stammt aus Kalifornien, weshalb wir von der Ungarischen Notation abraten, außer wo Header-Übersetzungen es erfordern:
KORREKT

FMyString: String;

INKORREKT

lpstrMyString: String;

Aufzählbare Typen stellen eine Ausnahme zur Regel für die Ungarische Notation dar.

TBitBtnKind = (bkCustom, bkOK, bkCancel, bkHelp,
  bkYes, bkNo, bkClose, bkAbort, bkRetry,
  bkIgnore, bkAll);

In diesem Fall werden für die Aufzählung vor jedem Element die Buchstaben bk hinzugefügt. bk steht für ButtonKind.
Berücksichtigen Sie beim Erdenken über Variablennamen, dass ein Zeichen lange Attributnamen außer bei temporären oder Schleifenvariablen vermieden werden sollten.

Methoden-Benennung

Methodennamen sollten den InfixCaps-Stil verwenden. Beginnen Sie mit einem Großbuchstaben und verwenden Sie für jedes untergeordnete Wort im Namen einen Großbuchstaben, ebenso bei Buchstaben, die Teil einer Abkürzung sind. Alle anderen Zeichen in dem Namen sind Kleinbuchstaben. Verwenden Sie keine Unterstriche, um Wörter zu trennen. Beachten Sie, dass dies identisch mit der Namenskonvention nicht-konstanter Attribute ist; dennoch sollte es immer einfach sein, die beiden aus ihrem Kontext zu unterscheiden. Methodennamen sollten Befehlsverben oder Sätze mit Verben sein.
Beispiele:

// GUTE Methodennamen:
ShowStatus, DrawCircle, AddLayoutComponent

// SCHLECHTE Methodennamen:
MouseButton  // Satz mit Substantiv; beschreibt nicht die Funktion
drawCircle   // beginnt mit einem Kleinbuchstaben
add_layout_component        // Unterstriche

// Die Funktion dieser Methode ist unklar. Startet
// sie den Server (besser: StartServer) oder prüft
// sie, ob er läuft oder nicht (besser: IsServerRunning)?
ServerRunning        // Satz mit Verb, aber nicht in Befehlsform

Eine Methode zum Lesen (Get) oder Schreiben (Set) einer Klasseneigenschaft (Property), sollte GetProperty oder SetProperty genannt werden, wobei „Property“ für den Namen der Eigenschaft steht.
Beispiele:

GetHeight, SetHeight

Eine Methode, die eine Booleaneigenschaft einer Klasse überprüft, sollte IsVisible genannt werden, wobei „Visible“ für den Namen der Eigenschaft steht.
Beispiele:

IsResizable, IsVisible

Benennung lokaler Variablen

Lokale Variablen folgen denselben Benennungsregeln wie Attributnamen, außer dass Sie das beginnende F weglassen, wenn es sich nicht um ein Feld eines Objekts handelt.

Reservierte Wörter

Reservierte Wörter und Direktiven sollten komplett in Kleinbuchstaben sein. Das kann manchmal etwas verwirrend sein. Typen wie Integer zum Beispiel sind einfach Bezeichner und beginnen mit einem Großbuchstaben. Strings werden dagegen mit dem reservierten Wort string deklariert, welches in Kleinbuchstaben stehen sollte.

Typdeklarationen

Alle Typdeklarationen sollten mit einem großen T beginnen und sollten denselben Groß- und Kleinschreibungsregeln folgen, die zu Beginn dieses Abschnittes oder im Abschnitt Klassendeklarationen ausgeführt wurden.