Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Break / Exit - Grundsatzfrage (https://www.delphipraxis.net/126159-break-exit-grundsatzfrage.html)

taaktaak 19. Dez 2008 10:35

Re: Break / Exit - Grundsatzfrage
 
Und das war doch sehr amüsant...

Sherlock 19. Dez 2008 10:37

Re: Break / Exit - Grundsatzfrage
 
Zitat:

Zitat von DeddyH
Sherlock, bei einer leeren Liste bekommst Du mit einer Fußschleife aber Kummer.

Stimmt auffallend.

Muss man halt noch ne Prüfung reinsetzen, aber es ging ja um den Grundgedanken, ohne Exit auskommen zu können (hat mich das jetzt gerettet? 8) )

Sherlock

DeddyH 19. Dez 2008 10:39

Re: Break / Exit - Grundsatzfrage
 
Zitat:

Zitat von Sherlock
hat mich das jetzt gerettet?

Nur, weil Weihnachten für der Tür steht :-D

burn 19. Dez 2008 10:42

Re: Break / Exit - Grundsatzfrage
 
Ok, Ok .. überredet !!! :oops: ..

Es geht auch mit "gutem" Stil (while Schleife) ...

Bevor ich jetzt wieder einen Thread ala "Negative Zahl errechnen" zu
verantworten habe, sag ich Danke für den Tip.

Aber was ist daran so verwerflich Exit und Break zu benutzen.
Für was gibt es die, wenn man diese nicht benutzen soll.

Ich z.B. Finde so was besser

Delphi-Quellcode:
  if Liste.Count = 0 then
    Exit
 
  weitere 40 Zeilen Code
als

Delphi-Quellcode:
  if Liste.Count > 0 then
  begin
    .
    .
    .
    weitere 40 Zeilen
    .
    .
    .
  end;

mfg Burn

guidok 19. Dez 2008 10:44

Re: Break / Exit - Grundsatzfrage
 
Ich bin jetzt kein Verfechter von Exit oder Break, allerdings verwende ich es auch bedenkenlos, wenn ich es für angebracht halte, deshalb:

Inwiefern ist Exit/Break schlechter Programmierstil?

Welche Nachteile erwachsen mir dadurch?

himitsu 19. Dez 2008 10:45

Re: Break / Exit - Grundsatzfrage
 
For- und While-"Schleifchen" sind intern eigentlich gleich.
Bei den Repeat-Until-"Schleifchen" wird nur der Ausdruck zuletzt ausgewertet

Delphi-Quellcode:
for i := i2 to i3 do begin

  if xyz then break;

end;

// entspricht (bzw)

i := i2;
while i <= i3 do begin

  if xyz then break;

  inc(i);
end;

// nja, eigentlich mehr diesem, wenn man bedenkt,
// daß Delphi i3 nur zu Begin der Schleife auswertet und das ergebnis zwischenspeichert

i := i2;
e := i3;
while i <= e do begin

  if xyz then break;

  inc(i);
end;

// und Delphi macht intern aus der For-, bzw der 2. While-Schleife dieses

i := i2;
e := i3;
Loop:
if i > e then goto LoopExit;

  if xyz then goto LoopExit;

  inc(i);
goto Loop;
LoopExit:

// PS: das ganze mit Repeat-Until, statt While, sieht etwa so aus

i := i2;
e := i3;
Loop:

  if xyz then goto LoopExit;

  inc(i);
if i <= e then goto Loop;
LoopExit:

// alles ohne CodeOptimierung
so und jetzt sage mal einer GOTO / Exit / Break seien so schlecht, wenn intern eh alles auf GOTO+IF aufbaut


Am Ende hat alles seine Vor- und Nachteile.

Und ich versuch das zu verwenden, welches in der entsprechenden Situation am Übersichtlichsten/Einfachsten ist. :angel:

[add] *rote kästen ignorier*


[add]
Nur hier sollten endlich mal alle den Unterschied zwischen EXIT und Break/Continue begreifen

Exit - beendet die Prozedur/Funktion
Break - beendet die Schleife

mirage228 19. Dez 2008 10:47

Re: Break / Exit - Grundsatzfrage
 
Also solange du weißt was du tust, kannst du Break und Exit wohl verwenden (es compiliert und läuft ja ordentlich :mrgreen:)
Aber so eine Zeile mit "if .. then Exit" könnte ggf. bei langen Code schon mal übersehen werden, besonders wenn es irgendwo mitten im Code ist...

Ansonsten verweise ich gerne auf einen 5 Jahren alten Thread von mir zum selben Thema:
Break schlechter Programmierstil? :)

Viele Grüße

turboPASCAL 19. Dez 2008 10:50

Re: Break / Exit - Grundsatzfrage
 
Man kanns ja auch mit Goto lösen wen man Break oder Exit nicht mag.

Nö. :mrgreen:



// Edit: Och manno, himitsu hats ja schon geschrieben... :(

Tyrael Y. 19. Dez 2008 10:52

Re: Break / Exit - Grundsatzfrage
 
Jeder Code der

1. gut wartbar ist
2. keine performanceeinbußen eingeht
3. die Funktionalität nicht einschränkt

ist der RICHTIGE Code.

Ob du Exit, Break oder sogar Goto benutzt ist irrelevant.PUNKT.

nicodex 19. Dez 2008 10:52

Re: Break / Exit - Grundsatzfrage
 
Zitat:

Zitat von burn
Oft genug habe ich jetzt schon in der DP gelesen, daß
die Benutzung von Break und Exit schlechter Programmier-Stil ist.

Wenn sie nicht jeweils ihre Daseinsberechtigung hätten, dann gäbe es nur eines oder gar keines dieser Sprachkonstrukte.

Man könnte eher Fragen warum der Parameter nicht "const" ist und warum Exit anstatt Break (hier ausreichend) verwendet wird. Es gibt nicht die richtige Lösung, sondern nur bessere und schlechtere Lösungen. Was "besser" ist, hängt von den Anforderungen, den Umständen und eigenen Entscheidungen ab.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr.
Seite 2 von 3     12 3      

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