AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mein Delphi-Style

Ein Thema von Dipl Phys Ernst Winter · begonnen am 17. Mai 2009 · letzter Beitrag vom 19. Mai 2009
Antwort Antwort
Seite 9 von 12   « Erste     789 1011     Letzte »    
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#81

Re: Mein Delphi-Style

  Alt 18. Mai 2009, 17:32
Um bei Hansas Beispiel zu bleiben:
Zitat von Hansa:
unsortiert in ein Buch einkleben.
Vielleicht doch, dann aber nur solange bis er eine bestimmte Marke sucht
Dann wird er ein paar Sortierungen (Jahr - Ort - ka, sammle keine Briefmarken) ausprobieren und dann die wählen die ihm am Besten gefällt und diese dann mit der Zeit verfeinern.

Der gute Stil muss sich also entwickeln und da ist es zwar hilfreich, dass mangelnde Formatierung angemahnt wird, aber ständig darauf herumzureiten stört imho die Entwicklung eines Stilbewusstseins.


MfG,
Bug
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#82

Re: Mein Delphi-Style

  Alt 18. Mai 2009, 17:50
Um vielleicht von der muss alles/muss nichts Diskussion weg zu kommen...

Man könnte ja eine Rangliste erstellen, welche Styleguides den Code deutlich lesbarer machen und welche dann nur noch marginal Verbesserungen bringen und evtl. weniger wichtig sind. Zumindest die wichtigen Punkte könnte man sich dann aneignen...

Einrückung sehe ich mit am wichtigsten (wobei wohl wieder die Sache mit begin ungeklärt bleiben wird)
  Mit Zitat antworten Zitat
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#83

Re: Mein Delphi-Style

  Alt 18. Mai 2009, 17:56
..da auch mal meinen Senf dazu geben moechte...
also ich finde, dass ja gewisse Tools..Castalia etc. auch in einer gewissen Form "markieren"..die sieht , nicht nur weil es meiner entspricht, auch sehr uebersichtlich aus und ich denke mal, dass die Firma sicher auch gewisse Standards genutzt hat um sie in dieser Art zu visualisieren.
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#84

Re: Mein Delphi-Style

  Alt 18. Mai 2009, 18:11
Zitat von Luckie:
Bei mir würde das so aussehen:
Delphi-Quellcode:
procedure TFtpBrowser.DeleteFile(AFile: String; IsDir: Boolean);
begin
  if (IsDir and (AFile <> '.') and (AFile <> '..')) then
  begin
    try
      RemoveFilesAndDir(...);
    except
      // Fehlerbehandlung
    end;
  end
  else if (not IsDir) then
  begin
    try
      Deletefile(..);
    except
      // Fehlerbehandlung
    end;
  end;
end;
Schonmal nicht schlecht, ich würde es aber so bevorzugen:

Delphi-Quellcode:
procedure TFtpBrowser.DeleteFile(AFile: String; IsDir: Boolean);
const
  strRemoveFileError = 'Could not remove %s %s';
var
  strErrorMessage: string;
begin
  try
    if (IsDir) then
      if ((AFile <> '.') and (AFile <> '..')) then
        Deletefile(..);
    else
      Deletefile(..);
  except
    if (IsDir) then
      strErrorMessage := Format(strRemoveFileError, ['directory', AFile])
    else
      strErrorMessage := Format(strRemoveFileError, ['file', AFile]);

    TriggerLogEvent(strErrorMessage, etError);
  end;
end;
Grüße,
Win32
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#85

Re: Mein Delphi-Style

  Alt 18. Mai 2009, 18:14
Das wird Delphi aber nicht kompilieren ("; nicht erlaubt vor einem else")
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#86

Re: Mein Delphi-Style

  Alt 18. Mai 2009, 18:20
War ja auch nur schnell zusammen getippt, hier gehts ja schließlich ums Prinzip
  Mit Zitat antworten Zitat
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
Benutzerbild von Der.Kaktus
Der.Kaktus

Registriert seit: 22. Jan 2008
Ort: Erfurt
958 Beiträge
 
Delphi 7 Enterprise
 
#88

Re: Mein Delphi-Style

  Alt 18. Mai 2009, 18:51
Zitat von Nighthawk1310:
Also bei mir würde der Beispiel-Code so aussehen:
...
..waer mir sehr!!! unuebersichtlich..meine Meinung 8)
Gruss Kaki

Repeat Until true=false;
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#89

Re: Mein Delphi-Style

  Alt 18. Mai 2009, 18:52
Zitat von Nighthawk1310:
Delphi-Quellcode:
///...
     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;
Gehört das "end;" jetzt zu "if (vstMainList.Selected[Node])" ? Zumindest würde ich das beim Überfliegen des Codes so sehen und somit den Code falsch verstehen.



Ich hätte da noch eine Idee, wie man einrücken kann:
1. Man nehme die aktuelle Uhrzeit mit Sekundenanzeige
2. Rechne Sekunden modulo 8
3. Das Erbegbnis ist die Anzahl der Leerzeichen die man zum einrücken der aktuellen Zeile benutzt. Solchen Code gibt es wirklich.
  Mit Zitat antworten Zitat
Benutzerbild von Nighthawk1310
Nighthawk1310

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

Re: Mein Delphi-Style

  Alt 18. Mai 2009, 18:57
Zitat von jbg:
Gehört das "end;" jetzt zu "if (vstMainList.Selected[Node])" ? Zumindest würde ich das beim Überfliegen des Codes so sehen und somit den Code falsch verstehen.
Ja. Denn "end"'s nach "if" benötigen auch immer ihr "begin". und der Block/die Einrückung zeigt es auch.
Im anderen Fall wäre es 3 leerzeichen weiter eingerückt + "begin" in der Zeile nach dem "then".
Michael
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 9 von 12   « Erste     789 1011     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz