Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi Neuer Artikel auf meiner HP: "Code-Design" (https://www.delphipraxis.net/22859-neuer-artikel-auf-meiner-hp-code-design.html)

BKempf 5. Jun 2004 08:24

Re: Neuer Artikel auf meiner HP: "Code-Design"
 
Wenn ich ein "end" sehe, suche ich dazu automatisch das "begin".
Ich habe mal eine Weile mit

Delphi-Quellcode:
if eins then begin
  foo;
end else if zwei then begin
  bar;
end else begin
  blubb;
end;
und aehnlichen Dingern experimentiert. Das ist fuerchterlich schiefgegangen, weil ich meine Bloecke nicht durch Draufsehen erkennen konnte, sondern immer das Ende der Zeile suchen musste. So etwas zu debuggen hat ewig gedauert.


Mein persoenlicher Styleguide sagt jetzt:
- Nach einem then folgt immer ein begin/end-Block. Ausnahmen, wenn ueberhaupt, nur zum Debuggen und dann mit (**) gekennzeichnet (das ist mein Zeichen fuer Baustellen, da ich als echte Kommentare nur die beiden anderen Typen verwende).
- Auch vor einem "end" steht ein Semikolon, ob ueberfluessig oder nicht. Es koennten ja noch Anweisungen hinzugefuegt werden, und dann ist dafuer schon alles vorbereitet :-). Sieht ausserdem einheitlicher aus.
- "begin" und "end" ("case xy of" und das dazugehoerige "end", "record"/"end", ...) beginnen grundsaetzlich auf einer Spaltenebene, die vom IDE-Editor mit einer ungeraden Zahl bedacht wurde.
- "else" steht auf geraden Ebenen. Das trennt mehrere aufeinanderfolgende begin..end-Bloecke optisch ein wenig.
- Bei mehreren if-Abfragen (quasi "case of" mit komplexeren Abfragen, die ein einfaches echtes "Case of" verhindern, etwa Stringueberpruefungen) stehen alle "if" in derselben Spalte.

Delphi-Quellcode:
// (Die Unterstriche bitte einfach mal wegdenken)
if eins then
begin
  foo;
end
_else
if zwei then
begin
  bar;
end
_else
begin
  blubb;
end;
Das ist zwar nicht so schoen kompakt wie andere Varianten, aber ich finds uebersichtlicher und das faellt ohnehin nicht sehr ins Gewicht, weil ich grosszuegig Leerzeilen einstreue.

GuenterS 5. Jun 2004 10:16

Re: Neuer Artikel auf meiner HP: "Code-Design"
 
Ich habe die Unterstriche mal weggemacht, dann sieht man gleich besser wie Du es gemeint hast. Frag mich wieso hast Du sie überhaupt dazu gegeben?

Delphi-Quellcode:
if eins then
begin
  foo;
end
else
if zwei then
begin
  bar;
end
else
begin
  blubb;
end;
Ich selbst bevorzuge aber so einen etas anderen Stil. Finde ich um einiges kompakter.

Delphi-Quellcode:
if eins then
  foo
else if zwei then
  bar
else
  blubb;

Die Muhkuh 5. Jun 2004 10:39

Re: Neuer Artikel auf meiner HP: "Code-Design"
 
Ich bevorzuge den Style von BKempf:

Delphi-Quellcode:
if a = b then
begin
  blubb;
end
else
begin
  >(((°>;
end;
if b = c then
begin
  ...;
end
else
begin
  ..;
end;
[edit=Sharky]Delphi-Abschluss-Tag gesetzt ;-) Mfg, Sharky[/edit]

BKempf 6. Jun 2004 18:55

Re: Neuer Artikel auf meiner HP: "Code-Design"
 
Zitat:

Zitat von GuenterS
Ich habe die Unterstriche mal weggemacht, dann sieht man gleich besser wie Du es gemeint hast. Frag mich wieso hast Du sie überhaupt dazu gegeben?

Delphi-Quellcode:
if eins then
begin
  foo;
end
 else
if zwei then
begin
  bar;
end
 else
begin
  blubb;
end;


Ich habe mich unklar ausgedrueckt. Die Unterstriche sollten zwar weg, aber der Platz sollte stattdessen von je einem Leerzeichen besetzt werden, d.h. die else-Anweisungen sollten um 1 eingerueckt bleiben :-).
Irgendwie hatte ich den Eindruck, als wuerden einzelne Leerzeichen auf dem Weg vom Browser ins Forum abhanden kommen ;-), jedenfalls waren die Einrueckungen in der Vorschau auf wundersame Weise verschwunden. Da habe ich mit halt mit Unterstrichen geholfen.


Zitat:

Zitat von GuenterS
Ich selbst bevorzuge aber so einen etas anderen Stil. Finde ich um einiges kompakter.

Delphi-Quellcode:
if eins then
  foo
else if zwei then
  bar
else
  blubb;

Den verwende ich nicht, weil dabei die Bedingungen nicht genau untereinander stehen. Abgesehen davon schreibe ich ja fast immer komplette begin..end-Bloecke, auch da, wo nur eine Anweisung bedingt ausgefuehrt werden soll.

GuenterS 6. Jun 2004 18:58

Re: Neuer Artikel auf meiner HP: "Code-Design"
 
Zitat:

Zitat von BKempf
Zitat:

Zitat von GuenterS
Ich habe die Unterstriche mal weggemacht, dann sieht man gleich besser wie Du es gemeint hast. Frag mich wieso hast Du sie überhaupt dazu gegeben?

Delphi-Quellcode:
if eins then
begin
  foo;
end
 else
if zwei then
begin
  bar;
end
 else
begin
  blubb;
end;


Ich habe mich unklar ausgedrueckt. Die Unterstriche sollten zwar weg, aber der Platz sollte stattdessen von je einem Leerzeichen besetzt werden, d.h. die else-Anweisungen sollten um 1 eingerueckt bleiben :-).
Irgendwie hatte ich den Eindruck, als wuerden einzelne Leerzeichen auf dem Weg vom Browser ins Forum abhanden kommen ;-), jedenfalls waren die Einrueckungen in der Vorschau auf wundersame Weise verschwunden. Da habe ich mit halt mit Unterstrichen geholfen.


Zitat:

Zitat von GuenterS
Ich selbst bevorzuge aber so einen etas anderen Stil. Finde ich um einiges kompakter.

Delphi-Quellcode:
if eins then
  foo
else if zwei then
  bar
else
  blubb;

Den verwende ich nicht, weil dabei die Bedingungen nicht genau untereinander stehen. Abgesehen davon schreibe ich ja fast immer komplette begin..end-Bloecke, auch da, wo nur eine Anweisung bedingt ausgefuehrt werden soll.

Achso hast Du das gemeint, naja dann find ich Deinen Stil für mich selbst eben noch ungünstiger weil ich dann erst nach dem zugehörigen else suchen muss und es zudem ja auch nicht dem Borland Stil entspricht. Aber jeder wie er glaubt.

BKempf 6. Jun 2004 19:06

Re: Neuer Artikel auf meiner HP: "Code-Design"
 
Zitat:

Zitat von GuenterS
Achso hast Du das gemeint, naja dann find ich Deinen Stil für mich selbst eben noch ungünstiger weil ich dann erst nach dem zugehörigen else suchen muss und es zudem ja auch nicht dem Borland Stil entspricht. Aber jeder wie er glaubt.

Fuer mich ist das optimal :-).
Abgesehen davon, dass ich die elses selten suche (und wenn, dann halt nur zwischen den eigentlichen Hauptebenen suchen muss), sind mir von der Struktur her die begin...end-Bloecke wichtiger, da sie haeufiger vorkommen (und auch, weil diese Strategie problemlos auf aehnliche Strukturen wie record...end, repeat...until etc. uebertragbar ist).

mimi 20. Jul 2004 20:34

Re: Neuer Artikel auf meiner HP: "Code-Design"
 
was haltet ihr von diesem code(es ist aus meinem pac-man clone und ist in einer extern unit in einer eigenen klassse ausgelagert und die komponenten(DXDraw, DXTimer, DXListImage werden zurlaufzeit erstellt)
Code:
procedure TPACMan.DXDraw1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  i,index:Integer;
  k:array of TKI;
begin

  if ssLeft in Shift then begin
    if (x div mapS <= MapX) and (y div mapS <= MapY) then begin
      if NTyp = isStein then CreateItems((x div MapS),(y div MapS),nTyp,ntex);
      if NTyp = isKi then CreateKI( (x div mapS),(y div mapS),0,0,random(6)+3 );
      if NTYp = isPlayer then begin
        Player.x:=x div mapS;
        Player.y:=y div mapS;
      end;
    end;
  end;

  if ssRight in Shift then begin
    if NTYp = isStein then begin
      Map[x div MapS,y div MapS].Typ:=None;
      Map[x div MapS,y div MapS].Tex:=0;
    end;

    if NTYp = isKI then begin
      index:=0;

      for i:=0 to HIGH(ki) do begin
        if (ki[i].x = x div mapX) and (ki[i].y = y div mapY) then begin
          index:=i;
          break;
        end;
      end;

      for i:=0 to HIGH(KI) do begin
        if i <> index then begin
          SetLength(k,high(k)+2);
          k[HIGH(K)]:=ki[i];
        end;
      end;

      SetLength(ki,0);
      SetLength(ki,high(k));

      for i:=0 to HIGH(KI) do begin
        ki[i]:=k[i];
      end;

    end;
  end;
       
end;
ich finde so einen code viel übersichtlich als, wenn man z.b.
Code:
for i:=0 to high(ki) do
begin
...
end;
schreiben würde

MathiasSimmack 20. Jul 2004 20:50

Re: Neuer Artikel auf meiner HP: "Code-Design"
 
Das habe ich auch mal gedacht, aber letztlich kommt es auf´s selbe raus. Ich meine, das "if" leitet die untergeordnete Ebene im Prinzip ja ein, da spielt´s dann auch keine Rolle mehr, das "begin" auf die gleiche Höhe zu setzen. Dem Compiler macht das nichts aus; will sagen: das Ergebnis ist das gleiche.

Soll heißen: Ich bevorzuge mittlerweile dann doch den Stil
Delphi-Quellcode:
if(irgendwas) then
begin
  irgendwas_anderes;
end;
Speziell auch wenn es um sehr lange Zeilen geht, mache ich lieber in der nächsten Zeile weiter als den rechten Rand im Editor zu überschreiten. Das mag den Code optisch verlängern (weil man mehr scrollen muss), aber andere Nebenwirkungen hat es nicht.

mimi 20. Jul 2004 20:53

Re: Neuer Artikel auf meiner HP: "Code-Design"
 
wenn ich z.b. mehre blöcke hintereinander habe die mit begin anfangen und end aufhören komme ich immer ducheinander, wenn das begin nicht auf der gleichen zeile steht wie der block *G*

naja, es ja auch egal *G*

MathiasSimmack 20. Jul 2004 21:01

Re: Neuer Artikel auf meiner HP: "Code-Design"
 
Das sehe ich zwar anders, aber wenn es dir egal ist, warum fragst du dann überhaupt?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 Uhr.
Seite 4 von 5   « Erste     234 5      

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