Einzelnen Beitrag anzeigen

Furtbichler
(Gast)

n/a Beiträge
 
#10

AW: Löschen in einer "for in" Schleife

  Alt 14. Dez 2013, 21:21
Ja das ist in der Ausführung die schnellste Variante, allerdings ist Schnelligkeit nicht immer ausschlaggebend. In meinem Fall habe ich so um die 100 Einträge in der Liste, da lege ich mehr Wert auf Lesbarkeit des Codes, außerdem spare ich somit eine Variable
Ich frage mich wirklich, was daran schlecht lesbar ist:
Delphi-Quellcode:
for i:=Liste.Count-1 downto 0 do
  if Bedingung(Eintrag[i]) Then
    Liste.Delete(i);
Oder findest Du die for-Schleife etwa 'old-school'? Den Umweg über ein Array zu gehen ist ja auch nicht gerade direkt, kurz und knapp, oder? Wenn Du das lesbar machen willst, dann benutze Refactoring;
Delphi-Quellcode:
...
LoescheBestimmteElementeAusDer(Liste);
...
Beim Lesen des Codes kann man ja wohl nicht anders, als zu lesen, was dort passiert. Da muss man noch nicht einmal großartig in die Routine reinspringen, weil das ja im Kontext der o.g. Routine sekundär sein dürfte.
Delphi-Quellcode:
Procedure LoescheBestimmteElementeAusDer(Liste : TListe);
var
  i : Integer;
Begin
  for i:=Liste.Count-1 downto 0 do
    if Bedingung(Eintrag[i]) Then
      Liste.Delete(i);
End;
  Mit Zitat antworten Zitat