Thema: Delphi Mein Delphi-Style

Einzelnen Beitrag anzeigen

Benutzerbild von Nighthawk1310
Nighthawk1310

Registriert seit: 22. Feb 2004
Ort: Izmir / Türkei
45 Beiträge
 
Delphi 7 Enterprise
 
#87

Re: Mein Delphi-Style

  Alt 18. Mai 2009, 18:36
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.
Michael
  Mit Zitat antworten Zitat