Slik automatisk Split Midlertidige variabler i Delphi

Denne artikkelen omhandler riktig bruk av midlertidige variabler, motivasjon for å splitte feil variabler, og hvordan du bruker Castalia automatisk splitte dem.
Jeg ønsker å ta opp et spørsmål som jeg får ofte fra folk som ser Castalia for første gang. Når de ser på refactorings, de ser ting som " Extract Method " og " Rename lokal variabel, " som er ganske selvforklarende. Som er, kan du finne ut hva de gjør basert på navnet. Da ser de " Split Temporary Variabel " og de er ikke sikker på hva du mener. Det er ikke en veldig intuitiv refactoring, og for det meste, blir det ignorert, til tross for å være utrolig nyttig
I et nøtteskall, dette refactoring brukes når ". Du har en lokal variabel som er tildelt mer enn en gang , og er ikke en sløyfevariabel eller en oppsamling av variabel-quot; (Martin Fowler i refactoring: Bedre Design av eksisterende kode)
Det er mange bruksområder for lokale variabler.. Noen av disse anvendelser krever naturligvis den variable som skal tildeles mer enn en gang. For eksempel, sløyfe variabler endres hver gang rundt en løkke (som jeg i for jeg: = 0 til 10). Samle midlertidige variabler samle noen verdi som er bygget opp i løpet av en metode, som regel med et mønster som ser ut som " SomeVar:. = SomeVar + SomeNewValue "
Andre midlertidige variabler brukes til å holde resultatet av et stykke kode for enkel referanse senere. Disse slags variabler bør angis én gang. Hvis de er satt mer enn en gang, er det et klart tegn på at den variable har mer enn ett ansvar i funksjon eller prosedyre. Dette er forvirrende å lese og vanskelig å vedlikeholde, som det er vanskelig å være sikker på et gitt tidspunkt som ansvar blir fulfulled. Hver ansvar bør være representert ved en tydelig variabel, noe som gjør koden lettere å lese og vedlikeholde
Det er der ". Split Midlertidig Variabel " refactoring kommer i. Det vil ta en variabel som har flere oppgaver og dele den inn i forskjellige variabler som har unike ansvar. La oss arbeide gjennom et eksempel:

bilder prosedyre TForm1.UpdateCoordinates;
Var
Temp: Integer;
begynne
Temp: = Shape1.Top;
StatusBar1.Panels [0] .Text: = IntToStr (Temp);
Temp: = Shape1.Left;
StatusBar1.Panels [1] .Text: = IntToStr (Temp); Anmeldelser end;
I denne metoden, er panelene av en statuslinje oppdatert med koordinatene til en form. Variabelen kalt " Temp " har flere ansvarsområder innenfor metoden. Det representerer både topp og Venstre verdier. Vi kan (og bør) delt dette ansvaret.
Å ha Castalia utføre denne split, vi plassere markøren i navnet på variabelen for å dele (noen henvisning til Temp vil gjøre, bare klikk på det slik at markøren er plassert i ordet " Temp ") . Velg " Split Temporary Variabel " fra refactoring menyen (enten fra redaktøren kontekstmenyen eller hoved menyen Rediger). Det vises en dialogboks som forteller oss at vi kommer til å dele Temp, som er av typen heltall, i to variabler, og ber om navnet på den nye variabelen. Vi går inn ShapeLeft som ny variabel navn og klikk OK.
Etter å ha klikket OK, vises refactoring explorer med de foreslåtte endringene. Legg merke til at noen av endringene er merket av som standard, andre ikke. Castalia antar at den første ansvar variabelen er å bli værende i eksisterende variabel, og den andre ansvaret er så bli fylt av den nye variabelen. Hvis du er uenig med denne forutsetningen, kan du sjekke og fjern disse endringene som du ser passer
Vi klikk ". GÅ " (som har blitt omdøpt " Apply " i Castalia 2.2), og Castalia vil gjøre de valgte endringene. Nå har vi en prosedyre som ser slik ut:
bilder prosedyre TForm1.UpdateCoordinates;
Var
Temp, ShapeLeft: Integer;
begynne
Temp: = Shape1.Top;
StatusBar1.Panels [0] .Text: = IntToStr (Temp);
ShapeLeft: = Shape1.Left;
StatusBar1.Panels [1] .Text: = IntToStr (ShapeLeft); Anmeldelser end;
Dette er forbedret. Selvfølgelig kunne noen ekstra refactoring gjøre denne koden enda bedre. Ved hjelp av " Rename Lokal Variabel " å endre navn Temp til noe sånt ShapeTop ville være en klar forbedring. Koden kan gjøres enda tydeligere ved å bruke " Inline Temporary Variabel " . å eliminere variabler helt
I denne artikkelen har vi lært om riktig bruk av midlertidige variabler og hvordan du bruker Castalia er " Split Temporary Variabel " refactoring å forbedre de områdene hvor vi kan ha feil brukt dem. Mer informasjon om Castalia øvrige refactorings finner du her. Anmeldelser



Previous:
Next Page: