AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

For-Schleife :Stilfrage

Ein Thema von Ego · begonnen am 4. Nov 2012 · letzter Beitrag vom 6. Nov 2012
Antwort Antwort
Seite 2 von 4     12 34   
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: For-Schleife :Stilfrage

  Alt 4. Nov 2012, 10:46
The answer is 42. What was the question?
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
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#12

AW: For-Schleife :Stilfrage

  Alt 4. Nov 2012, 10:49
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;
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain

Geändert von zeras ( 4. Nov 2012 um 10:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#13

AW: For-Schleife :Stilfrage

  Alt 4. Nov 2012, 10:49
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 4. Nov 2012 um 10:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

AW: For-Schleife :Stilfrage

  Alt 4. Nov 2012, 10:54
Vorallem hat man da, beim Debuggen, ein Zwischenergebnis, zum Prüfen. (sind die Kommas eigentlich richtig gesetzt? )
Das Komma hinter Zwischenergebnis ist zuviel
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#15

AW: For-Schleife :Stilfrage

  Alt 4. Nov 2012, 11:00
Ich behaupte einfach, daß s früher (vor den letzen 20 Regeländerungen) mal richtig war. (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 for i := 1 to 10 do locker mal for i := 0 to 10 do oder 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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#16

AW: For-Schleife :Stilfrage

  Alt 4. Nov 2012, 11:29
Es gab eine Zeit da war ich stolz drauf alles in eine einzige Zeile und ohne Semikolon zu packen:

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
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#17

AW: For-Schleife :Stilfrage

  Alt 4. Nov 2012, 13:48
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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#18

AW: For-Schleife :Stilfrage

  Alt 4. Nov 2012, 16:49
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
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#19

AW: For-Schleife :Stilfrage

  Alt 4. Nov 2012, 16:54
@sx2008 geht insofern am Thema vorbei dass man bisweilen durchaus Schleifen mit
For i := 0 to yetCalculated do
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#20

AW: For-Schleife :Stilfrage

  Alt 4. Nov 2012, 17:07
@sx2008 geht insofern am Thema vorbei dass man bisweilen durchaus Schleifen mit
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.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:07 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