Ommøblerer raskt med Castalia




Refactoring er prosessen med å "forbedre utformingen av eksisterende kode". Lær hvordan du blir en refactorer raskere og mer produktiv med Castalia.

Dette er den fjerde og siste utgaven av min serie artikler om resultatene fra vår studie som Castalia hjelper utviklere å bli mer produktive. I den siste måneden, skrev jeg om reduksjon av arbeidet ved å redusere tastetrykk, skriver kvalitet kode raskere med feilsjekking levende, og navigere gjennom kode raskere og mer nøyaktig. Denne uken vil jeg diskutere en av de mest produktive og mest nyttige av Castalia: automatisk refactoring.



Uansett hvor gode vi er, vi alle skrive kode som kan bli bedre. Ofte ser vi på eksisterende kode, og vi innser at vi kunne bruke klassenavn bedre, bedre separasjonsmetoder, bedre organisering, osv .... Det er det refactoring handler om - å endre koden til det bedre.

Den definitive arbeidet med emnet er refactoring: Bedre Design av eksisterende kode av Martin Fowler. I denne boken definerer Fowler refactoring som "bedre utforming av koden etter den ble skrevet." Refactoring er formelle prosedyrer for å endre utformingen av eksisterende kode

uten å endre virkemåten av koden


(Forresten, noen refactoring av Castalia Jeg må innrømme jeg er egentlig ikke ommøblerer, som de endrer oppførsel av koden).

Hensikten med denne artikkelen, er imidlertid ikke til Extol dydene av refactoring eller prøve å overbevise deg om at det er en god idé å begynne med. Jeg vil anta at du allerede forstår hvorfor refactoring er nødvendig, eller at du stoler på meg når jeg sier det er en god ting. Hva jeg vil gjøre er å snakke om hva vi så da vi så folk refactoring kode for hånd, og refactoring kode med Castalia.

Når vi observerte utviklerne på jobb, oppdaget vi at mange utviklere har brukt en betydelig mengde tid til å endre navn på ting eller omorganisere ting. Disse oppgavene enkle nok kunne ta dager til store prosjekter (tenk å måtte endre alle forekomster av TCustMan TCustomerMan til 250.000 linjer med kode spredt over 300 filer).

Utviklerne har tatt en rekke tilnærminger til dette. Mest brukte funksjonen i Delphi "finner i filer" for å finne alle forekomster av identifikatoren i spørsmålet, og deretter åpne hver fil og brukt Delphi "Søk/Erstatt" dialogboksen for å redigere teksten. Dette så ut til å være den mest effektive måten å gjøre det, selv om vi observerer en annen interessant tilnærming: Noen utviklere ville bare endre navnet på erklæringen og kompilere prosjektet. Når kompilering ville mislykkes med utallige feil "svart identifikator", ville de gå til hver enkelt og endre identifikatoren. Dette er den metoden foreskrevet av Fowler.

Han utvikler vi snakket kjent hvordan du bruker ommøblerer Castalia "Rename klassen" for å endre navn på klassen, ville ting være svært forskjellige. Ved hjelp av automatisert "Rename Class" refactoring av Castalia, tar prosessen

mindre enn et sekund


Det er egentlig en logisk måte å beskrive forbedring, siden ingen vil tro meg når jeg sier at vi kan bevise at Castalia kan tilby økt produktivitet på 22.000% (1 sekund automatisert enn å ta 6 timer å gjøre for hånd ), selv om det er sant.

Refactoring er ikke bare å endre navn på ting, skjønt. Et annet vanlig eksempel er refactoring "Extract Method", som vi alle trenger på ett eller annet tidspunkt. Dette er sannsynligvis den vanligste etterfulgt av ommøblerer refactoring "manualer". Vi bruker dette som en metode har blitt noe monolittisk og vi vet at deler av den bør fordeles på andre måter. Vi klippe og lime, flytte variabler, legger parametrene, etc ... før koden er laget bedre, men atferden er ikke endret. Dette refactoring er generelt raskere å endre navn på en global objekt brukt, men har potensial til å introdusere interessante feil som ikke var der før. Utviklere som har lært å bruke automatisert "Extract Method" refactoring av Castalia funnet ut at du kan få gjort raskere utvinning metoden, gjør mindre arbeid for hånd, og dramatisk redusere risikoen for å introdusere feil til nesten null.

Som du kan se de samme nivåer av produktivitet? Bruk refactoring verktøy. Selvfølgelig er dette lettere sagt enn gjort. I motsetning høydepunkt strukturelle eller syntakskontroll, trenger refactoring verktøy ikke hoppe ut på deg og si "bruke meg!" Lær å gjenkjenne de stedene der refactoring kan påføres tar en bit "av erfaring, men å vite hva som er tilgjengelig kan hjelpe mye. Refactoring automatisert Castalia er:

  • Rename Class - Endre navnet på en klasse, endre alle referanser til klassen å vurdere klassen 'nye navnet.
  • Flytt Class - Flytt en klassedefinisjon og alle dens metoder fra en enhet til en annen.
  • Rename Method - Endre navnet på en prosedyre eller funksjon, og alle referanser til prosedyre eller funksjon.
  • Pakk Metode - Trekker ut en kode segment i en egen prosedyre, og erstatte den opprinnelige segmentet med en oppfordring behørig gjort til den nye prosedyren.
  • Gi nytt navn til lokale variabler - Endre navnet på en lokal variabel og alle referanser til den variable innenfor en enkelt metode.
  • Inline midlertidig variabel - Når en variabel er tildelt verdien av en enkel setning, fjerner denne refactoring variabelen fra prosessen og erstatte alle forekomster av variabelen med det enkle utsagnet.
  • Splitte midlertidig variabel - Når en variabel er tildelt mer enn en gang, er det ofte lurt å "dele" variabelen i to forskjellige variabler. Split midlertidig variabel automatiserer dette ved å legge en ny variabel for prosedyren og gjøre de nødvendige endringene for å dele den opprinnelige variabelen i to. (Jeg skrev en artikkel om dette tilbake i februar).
  • Finn referanser (ikke en ekte refactoring) - Ikke gjør noen endringer i koden, men det er alle referanser til en identifikator i prosjektet.
  • Omgi med ... (Det er ikke en ekte refactoring) - omgir en valgt blokk med kode med noen av en rekke standard konstruksjoner som try..except..end, hvis da BEGIN..END, etc ... . Dette er ikke en ekte refactoring fordi det endrer atferden til koden, kunne vi ikke finne et bedre sted å sette den.

Refactoring automatisert Castalia er ekte perle, og har gjort mange utviklere og mange ledere utvikler ganske fornøyd. Produktivitetsvekst har godt designet kode er grenseløs. Benytte seg av automatisert refactoring av Castalia kan hjelpe utviklere forbedre sin kode raskt og uten kjedsomhet, slik at noen kode, uansett hvor dårlig utformet, til å bli stor kode.

Dette markerer slutten på vår serie på studiet bruk Castalia. Neste uke vil det være tid for noe helt annet!



Legg igjen en kommentar