Skocz do zawartości

[Delphi] Refactoring i pulapki :)


Toster

Polecane posty

ok teraz bedzie cos innego ciekawego (jak dla mnie)

zalozmy ze mamy obiekt o dzwiecznej nazwie: TGfxAnimator i ma ten obiekt taka metode:

 

procedure TGfxAnimator.ActivateSequence(const data: TGfxAnimatorData; const initFrame:integer=0);
begin
  if data = nil then begin
     fActiveSeq := nil;
     exit;
  end;

  if fAnimData.IndexOf(data) <0 then raise EKNInvalidArgument.Create('Sequence not found:');
  fActiveSeq := data;

  //--------------------
  TGfxAnimatorData(ActiveSeq).ResetAnim;
  SelectFrame(initFrame);
  //--------------------
end;
Ś)QŃŃŃMĄŃQŃŃŃŃ)(ĄŃŃŃMĄŃŃ(QŃŃĄŃMIŃ(MąŃĄŃ)(

 

i teraz moje pytanie: jak sadzicie czy podane przezemnie metody sa poprawnie zrefaktorowane ?

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

bez herezji jaka funkcje....

rozwin temat Blind, bo chcialbym zaznaczyc ze z funkcji przed refactorem wynika jasno ze nil jest akceptowalnym parametrem. Wiec po refaktorze dalej musi byc takim parametrem, nie mozemy zmieniac zakresu argumentow ktore funkcja przyjmuje.

 

Propozycja modyfikacji ? (bez zamiany na funkcje)

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

  • 2 weeks later...

zagadka nr 2 :)

 

mamy takie cus

 

  TObjEntity = class abstract(TMultiLinkableObj, IMultiParent)
     public
        constructor    Create;
        destructor     Destroy;override;
     protected
        fx, fy:        Real;
        fAnimators:    TList;
        fActiveAnimators:TList;       //!< lista aktywnych w tym momencie animatorow
        fRefCount:     integer;             //!< uzywane przez system interfacow
        fName:         string;

constructor TObjEntity.Create;
begin
  inherited;
  fActiveAnimators := TList.Create;
  fAnimators := TList.Create;
end;

(ł73z.ąŚ(Q1     =ąĄQ=ŃŃ(ą(ŃŃ
Ńą(Ń((ŃQ1(ŃŃQ1źźąąŃŃŃŃ(9Ń()ŃŃQ1     =
Ń)(ĄŃ(99QąŃ(ąŃ(%QąŃŃ)

 

No wiec kto wie, bedzie asercja (fAnimators = nil) czy nie bedzie asercji ?

Odpowiedz uzasadnij ;)

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Pomijając fakt, że, że są to dane niewidoczne dla foo, bo prywatne lub protected, ale załóżmy, że są publiczne, to uważam, że nie będzie asercji (FAnimators będzie różne od nil). Czemu? Bo wydaje mi się że takie coś zrobiłem w DeDo i wtedy doszedłem do wniosku, że zmienne się nie przykrywają. Baa.... teraz bym nie był pewien czy a.fAnimators jest różne od nil :)

Aczkolwiek mogę się mylić, bo może w DeDo było trochę inaczej

Baza tysięcy lotnisk: http://airportsbase.com

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...