Also bei mir würde der Beispiel-Code so aussehen:
Delphi-Quellcode:
if k=kMax
then
A[k] := A[k-1] / A[k]
if a=0
then
Result := 0
else
if a>0
then
Result := 1
else
Result := -1;
if Sender=mnPrintGraphOben
then
h:= ro
// 'Drucken|Graph oben'
else
h:= rm;
// 'Drucken|Graph unten'
for k:= 0
to kMax
do
A[k]:= 0;
for i := 1
to iMax
do
begin
temp := A[i];
A[i] := B[i];
B[i]:= temp;
end;
for i:= 2
to m
do
begin
for k:= 1
to i-1
do
B[i]:= B[i] - A[r(i,k)] * B[k];
B[i]:= B[i] / Abs(A[r(i,i)])
end;
with Image1.Canvas
do
begin
MoveTo(
DL, D0 - Round(sy * (F(xMin)-yMin)));
for i:= 0
to 320
do
begin
x:= xMin + i * dx;
LineTo(
DL + 2 * i, D0 - Round(sy * (F(x)-yMin)))
end;
end;
und eine Procedure/Function muss nicht unbedingt auf eine Bildschirmseite passen.
Das wichtigste ist, dass man es lesen und verstehen kann. Sprich, wenn man scrollen muss, dann
darf es nicht sein, dass man alle paar Zeilen zurück zu den Deklarationen der Variablen springen muss um
sich zu errinnern, was
DL, D0, ro oder rm nochmal bedeutet. Wenn ich Code sehe (meiner oder auch anderer Herkunft), dann möchte ich schon direkt (vor allem nach längerer Nichtbetrachtung) sofort sehen was dort "fabriziert" wurde und was es bedeutet.
Beispiel (Nodes mit Farbverlauf im VST zeichnen):
Delphi-Quellcode:
if (Node = vstMainList.HotNode)
then
begin
TargetCanvas.Pen.Color := $00FAF0D8;
//$0049CFF5;
cl1 := $00FDFAF4;
cl2 := $00FDF5E8;
end;
if (Node = vstMainList.FocusedNode)
then
begin
TargetCanvas.Pen.Color := $00FDDE99;
//$000C66D3;
cl1 := $00FDF8F1;
cl2 := $00FCEFD5;
end;
if ((vstMainList.HotNode = vstMainList.FocusedNode)
and (Node = vstMainList.HotNode))
then
begin
TargetCanvas.Pen.Color := $00FDDE99;
//$0049CFF5;
cl1 := $00FEF7E9;
cl2 := $00F6E4C0;
end;
....
....
....
if (Column = 0)
or (Column = vstMainList.Header.Columns.Count - 1)
then
begin
rcTemp := CellRect;
dec(rcTemp.Bottom, 1);
if (Column = 0)
then
rcTemp.Left := rcTemp.Right - 4;
if (Column = vstMainList.Header.Columns.Count - 1)
then
rcTemp.Right := rcTemp.Left + 4;
if (vstMainList.Selected[Node])
or (Node = vstMainList.HotNode)
then
eqComps.DrawGradient(TargetCanvas, rcTemp, False, [cl1, cl2]);
end;
Ich habe die Kommentare mal entfernt, aber ich denke, dass der Code relativ einfach zu vertstehen ist.
Auch wenn es nur ein Auszug ist.
Meine Variablennamen wähle ich eigentlich immer so, dass man aus ihnen Typ und Verwendungszweck erkennen kann.
rcTemp im Beispiel wird mehrmals an unterschiedlicher Stelle benutzt und immer wieder mal neu belegt.
pNodeDataUser und pNodeDataWorkplace im Folgenden lassen schon erkennen, dass es Node-Daten sind für Benutzer oder Arbeitsplätze auch ohne das dafür eine weitere Erläuterung notwendig wäre, abgesehen vom "wozu?".
Delphi-Quellcode:
if Node.Dummy = 98 then
begin
pNodeDataUser := vstMainList.GetNodeData(Node);
sTemp := GetWorkplaceNumberFromID(pNodeDataUser.lRefWorkplaceID);
....
....
....
end;
if Node.Dummy = 99 then
begin
pNodeDataWorkplace := vstMainList.GetNodeData(Node);
....
....
....
end;
Variablen sollten abgesehen davon nur am Deklarationsort einmal etwas genauer beschrieben werden.
Mitten im Code macht es wenig Sinn, es sei denn die Namen der Variablen sind Nichtssagend.
Fazit für mich:
Bis jetzt sind auch andere, die mit meinem Code etwas machen mussten gut und schnell (ohne große Erklärungen)
damit zurechtgekommen. Und das ist die Hauptsache.