Delphi-PRAXiS
Seite 3 von 10     123 45     Letzte » 

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Die "richtige" Sourcecode Formatierung? (https://www.delphipraxis.net/189924-die-richtige-sourcecode-formatierung.html)

Mavarik 9. Aug 2016 17:48

AW: Die "richtige" Sourcecode Formatierung?
 
Zitat:

Zitat von Jumpy (Beitrag 1344504)
Delphi-Quellcode:
if .. then
  begin
  ..
  end
else if .. then
  begin
  ..
  end
else
  begin
  ..
  end;

Gruselig...Codesumpf nenne ich das...

Delphi-Quellcode:
if ..
  then begin
        ..
       end
  else if ..
         then begin
               ..
              end
         else begin
               ..
              end;
Und schon is klar was wohin gehört...

ggf.

Delphi-Quellcode:
if ..
  then begin
        ..
       end
  else begin
         if ..
           then begin
                 ..
                end
           else begin
                 ..
                end;
       end;
So würde ich es machen...

Mavarik :coder:

mensch72 9. Aug 2016 18:03

AW: Die "richtige" Sourcecode Formatierung?
 
Delphi-Quellcode:
if ..
  then begin
        ..
       end
  else begin
         if ..
           then begin
                 ..
                end
           else begin
                 ..
                end;
       end;

... mache ich bzgl. Struktur genauso, nur etwas kompakter und nicht so "raumgreifend" in die Breite;)

Delphi-Quellcode:
if (..) then begin
  ..
end else begin
  if (..) then begin
    ..
  end else begin
    ..
  end;
end;
und zumindest in CNpack und auch aktuell integriertem Castalia sieht das sogar sehr sauber aus:)

bernau 9. Aug 2016 18:05

AW: Die "richtige" Sourcecode Formatierung?
 
Ich liebe solche Threads ;-)

Hier ist mein Beitrag zu den If then else

Delphi-Quellcode:
 
  If bla then
    TuWas;

  If bla then
    TuWas
  else
    TuWasAnderes;

  If bla then
    begin
      TuWas;
      TuNochWas;
    end
  else
    begin
      TuWasAnderes;
      TuNochWasAnderes;
    end;

  If bla then
    begin
      TuWas;
    end
  else
    If blabla then
      begin
        TuNochWas;
      end;
Eine Zeile, die mit "if" beginnt, hört immer mit "then" auf.

"Darunter" kommt die auszuführende Funktion. Natürlich eingerückt.

Das gilt auch für das Begin und End, die auf eine ebene gehören.

Bei verschachtelten Ifs finde ich, ist eine Einrückung des nächsten If zwingend notwendig, damit ich auf einen Blick sehe, dass es eine Verschachtelung ist.

jfheins 9. Aug 2016 18:09

AW: Die "richtige" Sourcecode Formatierung?
 
Zitat:

Zitat von Mavarik (Beitrag 1344516)

So würde ich es machen...

Mavarik :coder:

Schrecklich :stupid:

Ich würde das hier befürworten:
Delphi-Quellcode:
if .. then
begin
  ..
end
else if .. then
begin
  ..
end
else
begin
  ..
end;
Sowas macht man ja eigentlich nur, wenn man eigentlich ein ein case-Konstrukt bräuchte, das aber nicht zugelassen ist. (Ausdruck zur Compilezeit variabel oder so...)
Insofern finde ich es sinnvoll, das auch optisch analog zu gestalten. Logisch ist das auch nur eine "Unterebene", da nur einer der Subblöcke ausgeführt wird.

Wenn man da jeden Subblock weiter einrückt, hat man ja schnell ewig lange Zeilen.

Zur Praxisrelevanz ein (delphisiertes) Codezitat:
Delphi-Quellcode:
startTime, endTime: string;

if (SpecificRegex.IsMatch(Event.Time)) then
begin
    match := SpecificRegex.Match(Event.Time);
    startTime := match[0];
    endTime := match[1];
end
else if (RegexA.IsMatch(Event.Time)) then
begin
    startTime := '8:00';
    endTime := '10:00';
end
else if (RegexB.IsMatch(Event.Time)) then
begin
    startTime := '9:00';
    endTime := '12:00';
end
else if (RegexC.IsMatch(Event.Time)) then
begin
    startTime := '12:00';
    endTime := '15:00';
end
else if (RegexD.IsMatch(Event.Time)) then
begin
    startTime := '14:00';
    endTime := '16:00';
end
else
begin
    allDayEvent := true;
    startTime := Event.startTimeDate;
    endTime := Event.EndDate.AddDays(1);
end
Da habe ich dann auch lieber deutliche Einrückungen (1 Tab = 4 Leerzeichen) damit man die Blöcke direkt sieht. Würde man dann allein für das begin eine eigene Einrückungsebene einziehen, vergeudet man ja die Hälfte des Platzes...
Ich würde daher aus
Delphi-Quellcode:
if bla then
  begin
    TuWas;
  end
das machen:
Delphi-Quellcode:
if bla then
begin
    TuWas;
end
Dann kann man auch (etwas leichter) links am Rand 'runtergucken um das nächste end zu sehen.

bernau 9. Aug 2016 18:14

AW: Die "richtige" Sourcecode Formatierung?
 
Auch wenn solche Threads sich wiederholen. Etwas kann man immer mitnehmen.

Durch solche Threads habe ich für mich das "Exit" entdeckt. Gibt's natürlich schon länger und habe ich bisher immer als "bah" angesehen. Beim näheren Hinsehen kann man das aber sehr sinnvoll als ersatz für die If-Verschachtelung verwenden.

Statt

Delphi-Quellcode:
  if bla then
    Result = 3
  else
    if blabla then
      Result = 5
    else
      if Blub then
        Result = 8
      else
        Result = 10
Finde ich folgendes besser lesbar

Delphi-Quellcode:
  if bla then
    Exit(3);
  if blabla then
    Exit(5);
  if Blub then
    Exit(8);
  Result = 10

Mavarik 9. Aug 2016 18:20

AW: Die "richtige" Sourcecode Formatierung?
 
Zitat:

Zitat von jfheins (Beitrag 1344521)
Sowas macht man ja eigentlich nur, wenn man eigentlich ein ein case-Konstrukt bräuchte, das aber nicht zugelassen ist.

nicht jede if then else ist ein Case ersatz!

Wo sind deine Then's geblieben? und auch noch Tabs... hmm ":="; hmm end : String?

Zitat:

Zitat von jfheins (Beitrag 1344521)
Da habe ich dann auch lieber deutliche Einrückungen (1 Tab = 4 Leerzeichen) damit man die Blöcke direkt sieht.

Immer 2 dann plötzlich 4??? Eher nicht.

Case Ersatz... (Wenn überhaupt)

Delphi-Quellcode:
start, end: string;

if (SpecificRegex.IsMatch(Event.Time))
  then begin
         match := SpecificRegex.Match(Event.Time);
         start := match[0];
         end  := match[1];
       end
  else
if (RegexA.IsMatch(Event.Time))
  then begin
         start := '8:00';
         end  := '10:00';
       end
  else
if (RegexB.IsMatch(Event.Time))
  then begin
         start := '9:00';
         end  := '12:00';
       end
  else
if (RegexC.IsMatch(Event.Time))
  then begin
         start := '12:00';
         end  := '15:00';
       end
  else
if (RegexD.IsMatch(Event.Time))
  then begin
         start := '14:00';
         end  := '16:00';
       end
  else begin
         allDayEvent = true;
         start = Event.StartDate;
         end = Event.EndDate.AddDays(1);
       end

jfheins 9. Aug 2016 18:28

AW: Die "richtige" Sourcecode Formatierung?
 
Zitat:

Zitat von Mavarik (Beitrag 1344523)
nicht jede if then else ist ein Case ersatz!

Nein, aber diese if then else -Ketten eher schon. Wenn da komplett unzusammenhängende Bedingungen abgefragt werden, dann würde ich da Leerzeilen einfügen zum trennen.

Zitat:

Wo sind deine Then's geblieben? und auch noch Tabs... hmm ":="; hmm end : String?

Immer 2 dann plötzlich 4??? Eher nicht.
Ups, länger nicht mehr Delphi gemacht. Thens habe ich nachgetragen, genauso wie die := :oops:
Sry, die Tabs werden im Forum nicht gut angezeigt. (Tabs vs Spaces würde ich auf später verschieben...) Ich habe sie durch Leerzeichen ersetzt ;-)

Der schöne Günther 9. Aug 2016 18:29

AW: Die "richtige" Sourcecode Formatierung?
 
Habt Ihr euch mal überlegt dass man im Endeffekt ganz andere Probleme hat wenn man anfangen muss 5-fach verschachtelte Bedingungen zu schreiben? :stupid:

Beiträge wie dieser sind wahrscheinlich der Grund weshalb ich nirgendwo eingeladen werde

DeddyH 9. Aug 2016 18:31

AW: Die "richtige" Sourcecode Formatierung?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1344525)
Habt Ihr euch mal überlegt dass man im Endeffekt ganz andere Probleme hat wenn man anfangen muss 5-fach verschachtelte Bedingungen zu schreiben? :stupid:

Beiträge wie dieser sind wahrscheinlich der Grund weshalb ich nirgendwo eingeladen werde

:thumb: (abgesehen davon finde ich den ganzen Thread irgendwie müßig, jeder hat da seine eigenen Vorlieben).

bra 9. Aug 2016 18:31

AW: Die "richtige" Sourcecode Formatierung?
 
Beim letzten Beispiel sieht man nur lauter IF's aber die so seltsam eingerückten ELSE vorher gehen komplett verloren. Das nenn ich mal unübersichtlich.

Ich denke über dieses Thema könnte man endlos streiten und nie zu einem Kompromiss finden, jeder hat hier halt seine Vorlieben. Vielleicht sollten wir es dabei auch belassen 8-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:30 Uhr.
Seite 3 von 10     123 45     Letzte » 

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf