Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#15

Re: Programmoptimierung

  Alt 8. Mär 2010, 06:50
So, und wenn wir schon beim Fiddelkram sind:
1. Wieso heißt das 'XinRange', wenn doch in der Funktion gar kein 'X' vorkommt?
2. Selbst bei 'LeftInRange' blieben noch Zweifel, ob es das ist, was die Funktion prüft.
3. Und was sind das für magische Zahlen '30' und '26'?

Mein Refactoring würde so aussehen:
Delphi-Quellcode:
Function InRange (aNumber, aLowBound, aHighBound : Integer) : Boolean;
Begin
  Result := (aNumber >= aLowBound) and (aNumber <= aHighBound);
End;

Function PointInImage (aPoint : TPoint; aImage : TImage) : Boolean;
Begin
// Ich gehe mal davon aus, das die '30' die Breite und Höhe des Bildes sind
  Result := InRange (aPoint.X, aImage.Left, aImage.Left + aImage.Width)
        and InRange (aPoint.Y, aImage.Top, aImage.Top + aImage.Height)
End;

Function SpriteInImage (aSprite, aImage : TImage) : Boolean;
// Ich gehe davon aus, das die '26' die Breite und Höhe des Sprites sind
Begin
  Result := PointInImage (aSprite.BoundsRect.TopLeft)
        Or PointInImage (aSprit.BoundsRect.BottomRight);
End;

...
for i:= 1 to anzahl do begin
  if existiert[i] then
    if SpriteInImage (Image2, geister[i]) then begin
      geister[i].free;
      existiert[i]:=false;
    end;
end;
Kann aber auch sein, das ich den Code nicht verstanden habe. Wär' ja nicht das erste Mal
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat