Ich habe bei dem Programm (die Parameter sind nur Beispiel) eine strikte Trennung zwischen lokalen/globalen Variablen und Parametern vorgenommen.
Lokale Variablen beginnen mit einem kleinen l, gefolgt von einem Kleinbuchstaben, aus dem ich die Art der Variablen erkenne: z.B. i für Ganzzahl, e für Float, o für Object, s für String ...
Globale Variablen habe ich wie folgt gekennzeichnet: beginnendes kleines g und dann kleine Kennzeuchnung wie lokale Variable.
Parameter fangen mit einem kleinen p an.
Also sieht der Prozeduraufruf beispielhaft wie folgt aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure ProcName(psText : string; psZusatz : string = ''; piTyp : integer = 10); var lsTest : String; liVar1 : Integer; begin lsTest := psText + #10#13; if piTyp<10 then TueIrgendwas(lsTest); else TueWasAnderes(lsTest); end; |
So ist eine Verwechslung nicht möglich. Sieht zwar nicht wirklich toll aus, aber ich kann viel einfacher über mehrere Quelltexte bestimmte Größen in ihrem Namen ändern und auch viel einfacher Variablen von Parametern und Funktionsaufrufen unterscheiden. Funktionen/Prozeduren beginnen mit einem Großbuchstaben.
Auch kann ich sofort den Typ der Variablen und Parameter erkennen, was bei Namen wie : Value, Wert, Inhalt ... nicht möglich ist.
folgende Typzeichen habe ich belegt:
a: Array mit anschließendem Typ der Variable (ae = z.B. Array[1..12] of double)
b: boolean
c: char
e: extended, double, single ...
f: procedure/function
i: integer, byte, word, dword, longint
m: Set (Menge) z.B. Set of Char;
o: Objekt/Klasse (z.B. TList, TObject, TButton....)
p: Pointer
r: record
s: string
t: TDateTime
v: Variant
Einzig Variablen wie i, s, n habe ich nicht geändert, nur konsequenterweise klein geschrieben. Auch die Parameter Sender, Value (bei Property) und andere vordeklarierte Parameter von Delphi habe ich nicht geändert, selbstverständlich auch nicht Self!
So kann ich jetzt auch Delete oder Text verwenden, eben mit den vorgenannten Buchstaben: z.B. lbDelete, lsText, psText ...
Wahrscheinlich, muss mal sehen, werde ich auch Records entsprechend ausstatten (mit vorangestelltem r) Dann sieht man sofort, was Record-Eigenschaften sind. Oder auch Klassenvariablen (vorangestelltes f).
z.B.
Delphi-Quelltext
1: 2: 3: 4: 5:
| type grTest = record rsEintrag : string; rbGelesen : boolean; end; |
Da keine Verwechslung vorliegt ist der Effekt eben immer noch nicht klar. Aber es funktioniert mit einem optionalen Paramter.
Toleranz ist eine Grundvoraussetzung für das Leben.