Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   For-Schleife :Stilfrage (https://www.delphipraxis.net/171375-schleife-stilfrage.html)

DeddyH 4. Nov 2012 09:46

AW: For-Schleife :Stilfrage
 
The answer is 42. What was the question? :lol:

zeras 4. Nov 2012 09:49

AW: For-Schleife :Stilfrage
 
Wenn man die Interna von Delphi nicht kennt, dann würde man denken, dass diese Schleife nicht sauber ausgeführt werden kann, denn zaehler wird zwar auf 17 gesetzt, aber dann mit 0 überschrieben. Wenn ich das in einem Projekt gesehen hätte, dann hätte ich das gleich "rausgeschmissen" und den "to" Zweig mit einer Konstanten oder Variablen geschrieben.
Für mich ist das nicht sauber programmiert.

Zitat:

Delphi-Quellcode:
zaehler := 17;
for zaehler := 0 to zaehler do
begin
end;


himitsu 4. Nov 2012 09:49

AW: For-Schleife :Stilfrage
 
Zitat:

Delphi-Quellcode:
zaehler := 17;
for zaehler := 0 to zaehler do

Für die Lesbarkeit empfinde ich sowas als Grauenhaft.
Wenn man der Ende-Variable einen "anderen" entsprechenden Namen gibt, dann mag das OK sein.
Wofür man sowas nutzen, aber bei dann eher bei "größeren" Auswertungen, also wenn man da noch viel rechnet, dann dieses Zwischenspeichern und nur die kurze Variable in die Schleifenauswertung rein.

Vorallem hat man da, beim Debuggen, ein Zwischenergebnis zum Prüfen.

[edit]
@zeras: Genau das ist das Problem mit dem Codeverständnis.

Genauso sollte man besser keine Schleifenvariablen nach der Schleife auswerten, was dennoch Viele machen, da es oftmals grade noch so gut geht.

Sir Rufo 4. Nov 2012 09:54

AW: For-Schleife :Stilfrage
 
Zitat:

Zitat von himitsu (Beitrag 1189621)
Vorallem hat man da, beim Debuggen, ein Zwischenergebnis, zum Prüfen. (sind die Kommas eigentlich richtig gesetzt? :gruebel:)

Das Komma hinter Zwischenergebnis ist zuviel :)

himitsu 4. Nov 2012 10:00

AW: For-Schleife :Stilfrage
 
Ich behaupte einfach, daß s früher (vor den letzen 20 Regeländerungen) mal richtig war. :stupid: (mir war schon so, daß da irgendwas nicht stimmen kann)

Was man auch noch beachten sollte, daß Delphi gerne mal die interne Behandlung der Schleifen anpaßt.
- Zählbereich verschieben
- und/oder sogar rückwärtszählen

Wenn man in der Schleife das i eh nicht auswertet, dann kann für
Delphi-Quellcode:
for i := 1 to 10 do
locker mal
Delphi-Quellcode:
for i := 0 to 10 do
oder
Delphi-Quellcode:
for i := 9 downto 0 do
gnommen werden.
Bei Erstetem braucht nur noch +1 gerechnet werden, wenn der Wert doch verwendet wird. Vorallem wenn man einen String charweise durchläuft, wo überall sowieso -1 gerechnet würde, da der Stringindex bei 1 benginnt, wo sich dann -1 und +1 wieder aufheben.

Popov 4. Nov 2012 10:29

AW: For-Schleife :Stilfrage
 
Es gab eine Zeit da war ich stolz drauf alles in eine einzige Zeile und ohne Semikolon zu packen:

Delphi-Quellcode:
try while i <> 2 do begin if Random(100) = 50 then i := Random(50) else if Random(100) = 30 then i := Random(30) else i := i * 2 end except i := -1 end

hoika 4. Nov 2012 12:48

AW: For-Schleife :Stilfrage
 
Hallo,

Um auf die Kernfrage zurückzukommen.
Ja, es ist schlechter Stil,
weil die Variable sowohl als Zählvariable als
auch als Endbedingung verwendet wird.

Eine Variable sollte nur für einem Zweck verwendet werden.


Heiko

sx2008 4. Nov 2012 15:49

AW: For-Schleife :Stilfrage
 
Bei der For-Schleife ist es wichtig zu wissen, dass der Von- und der Bis-Wert nur einmal ausgewertet werden.
Delphi-Quellcode:
// die Funktionen Von() und Bis() werden nur einmal aufgerufen
for i := Von() to Bis() do
begin
end;
In der Programmiersprache C/C++ ist das anderst aber wir sprechen hier von Pascal/Delphi.

Deshalb ist es überflüssig für den Anfangswert und/oder den Endewert eine Zwischenvariable zu verwenden.
Zu Debuggingzwecken oder zur besseren Lesbarkeit des Codes kann man natürlich eine Zwischenvariable verwenden.
Was aber überhaupt nicht geht (und auch keinen Sinn macht) ist die Laufvariable der For-Schleife als Bis-Wert zu missbrauchen!!
Delphi-Quellcode:
// FALSCH!!!
zaehler := 17;
for zaehler := 0 to zaehler do

// RICHTIG!
for zaehler := 0 to 17 do

Bummi 4. Nov 2012 15:54

AW: For-Schleife :Stilfrage
 
@sx2008 geht insofern am Thema vorbei dass man bisweilen durchaus Schleifen mit
Delphi-Quellcode:
For i := 0 to yetCalculated do

sx2008 4. Nov 2012 16:07

AW: For-Schleife :Stilfrage
 
Zitat:

Zitat von Bummi (Beitrag 1189653)
@sx2008 geht insofern am Thema vorbei dass man bisweilen durchaus Schleifen mit
Delphi-Quellcode:
For i := 0 to yetCalculated do

Ich hab nichts anderes behauptet.
Der Grund den Schleifenzähler als Bis-Wert zu missbrauchen kann eigentlich nur so entstehen.
1.) Der Programmierer hat die Befürchtung, dass der Bis-Wert mehr als einmal berechnet wird.
==> er denkt er braucht eine Zwischenvariable
2.) Der Programmierer ist schreibfaul und verwendet einfach die Laufvariable der For-Schleife
Dabei entsteht dieser Code
Delphi-Quellcode:
// FALSCH!!!
zaehler := FunktionDieVielZeitBraucht();
for zaehler := 0 to zaehler do
Da aber schon die Annahme bei 1.) falsch war, ist diese Vorgehensweise überflüssig.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 Uhr.
Seite 2 von 4     12 34      

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