Spezifikation des Delphi-Code-Erstellungsformulars Der Zweck dieser Spezifikation besteht darin, Ihrem Code ein einheitliches und standardisiertes Erscheinungsbild zu verleihen und ihn zu verbessern
Lesbarkeit, Verständlichkeit, Wartbarkeit
Prinzip dieser Spezifikation: Der Name spiegelt die Bedeutung wider, die Form spiegelt die Struktur wider
1. Einheitenstil
2. Stil jedes Bezirks
3. Statement-Stil
4. Namensregeln
Referenz: Offizieller Object Pascal-Styleguide von Borland
Delphi5-Programmierhandbuch zu Codierungsstandards
{ }
{Projektname}
{ }
{Copyright (C) 2000,2001 Firmenname}
{ }
{***************************************************** ***** ******}
Einheit Einheitenname;
{***************************************************** ***** ******
Projekt:
Modul:
beschreiben:
Version:
Datum:
Autor:
erneuern:
TODO:
************************************************** * *****}
Schnittstelle
verwendet
----,----,----,----,----,----,----,----,----,----, ----,
----,----, ----,----,----,----;
const
-------------------;
-------------------;
-------------------;
Typ
-------------------;
-------------------;
-------------------;
-------------------;
-------------------;
-------------------;
var
-------------------;
-------------------;
-------------------;
Durchführung
verwendet
----,----,----,----;
{$R *.RES}
{$R *.DFM}
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
Ende.Rückkehr
Themenkommentare, Zweckbeschreibung von Funktionsprozeduren, Anweisungskommentare
Leerzeilen: Copyright-Blöcke, zwischen Klassen, zwischen Methoden – (zwei Zeilen) Interne Blöcke von Methoden (eine Zeile)
Leerzeichen: Wird zur Verbesserung der Klarheit verwendet
Einzug: zwei Leerzeichen
----- = ----;
----- = ----;
----- = ----;
----- = ----;Erweiterung
Präfix: nur C_---; bis zu ein Präfix pro Thema
Konst
{ Thema 1 }
C_--- = ----; {Bedeutung}
C_--- = ----; {Bedeutung}
C_--- = ----; {Bedeutung}
C_--- = ----; {Bedeutung}
{ Thema 2 }
----- = ----;
----- = ----;
----- = ----;
----- = ----; Ressourcenzeichenfolge, platziert nach dem Variablenbereich
Ressourcenzeichenfolge
const
S_--- = '----';
S_--- = '----';
S_--- = '----';
Beispiel: CM_BASE = $B000;
CM_ACTIVATE = CM_BASE + 0;
CM_DEACTIVATE = CM_BASE + 1;
CM_GOTFOCUS = CM_BASE + 2;
CM_LOSTFOCUS = CM_BASE + 3;
NumPaletteEntries = 20;
BoxPoints: Array[0..5, 0..2] von GLfloat =
((-1, 0, 0),
(0, 1, 0),
(1, 0, 0),
(0, -1, 0),
(0, 0, 1),
(0, 0, -1) );
{ Variantentypcodes (wtypes.h) }
varEmpty = $0000; { vt_empty }
varNull = $0001; { vt_null }
varSmallint = $0002; { vt_i2 }
GIFVersions: array[gv87a..gv89a] of TGIFVersionRec = ('87a', '89a');
T---- = ---------
Objekttyp -> Entität, die zustandsbehaftet ist und Dienste bereitstellt
T---- = Klasse(----)
Privat
--------
--------
geschützt
--------
--------
öffentlich
--------
--------
veröffentlicht
--------
--------
Ende; Alphabetisch sortierenPrivat
1. Alle Daten werden im privaten Bereich abgelegt, beginnend mit F
2. Die Methodenzeiger, die allen Ereignisattributen entsprechen, werden im privaten Bereich platziert, beginnend mit F.
3. Die Get- und Set-Methoden von Attributen werden im privaten Bereich platziert –> sind nicht für die Vererbung vorbereitet.
4. Die Methode zur Beantwortung der Nachricht wird im privaten Bereich platziert.
geschützt
1. Methoden und Attribute, die von Unterklassen aufgerufen werden, aber nicht von der Außenwelt aufgerufen werden können
2. Methoden für virtuelle Überladung;
öffentlich
1. Erstellen Sie eine Destruktormethode
2. Methoden für externe Anrufe
3. Attribute für externe Anrufe
veröffentlicht
1. Eigenschaften, die im Objektinspektor für Designzwecke angezeigt werden
2. Ein Beispiel für eine Ereignisantwort, die zur Entwurfszeit im Objektinspektor angezeigt wird: TGIFVersion = (gvUnknown, gv87a, gv89a);
TGIFVersionRec = array[0..2] of char;
PInterfaceTable = ^TInterfaceTable;
TInterfaceTable = gepackter Datensatz
EntryCount: Ganzzahl;
Einträge: array[0..9999] of TInterfaceEntry;
{ forWord-Deklaration }
TGIFImage = Klasse;
TGIFSubImage = Klasse;
{------------
TGIFItem
-----------}
TGIFItem = Klasse(TPersistent)
Privat
FGIFImage: TGIFImage;
.............
Ende;
Achten Sie darauf, keine Standardklassenobjektvariablen zu haben, sondern deklarieren Sie diese im Aufrufer!
var
-----------: -------;
-----------: -------;
Beispiel:
GIFDelayExp: integer = 10; { Verzögerungsmultiplikator in mS.}
GIFDelayExp: Ganzzahl = 12;
Thema
-------------------------------------------------- --------}
{Zweck der Methode}
Verfahren ----------------------------
beginnen
--------;
--------;
Ende;
{Zweck der Methode}
Funktion-----------------------------
beginnen
--------;
--------;
Ende;
Formatrückgabe