Fast Refactoring med Castalia

Refactoring er prosessen med " bedre utforming av eksisterende kode. &Quot; Lær hvordan du blir en raskere og mer produktivt refactorer med Castalia.
Dette er den fjerde og siste utgaven av min serie artikler diskutere resultatene fra vår studie i hvordan Castalia hjelper utviklere å bli mer produktive. Over den siste måneden, har jeg skrevet om å redusere arbeidet ved å redusere tastetrykk, skriver kvalitet kode raskere med levende feilsjekking, og navigere gjennom kode raskere og mer nøyaktig. Denne uken vil jeg diskutere en av Castalia mest produktive og mest nyttige funksjoner: Automatisert Refactoring

Det spiller ingen rolle hvor gode vi er, vi alle skrive kode som kan bli bedre.. Vi ser ofte på eksisterende kode og innser vi kunne ha brukt bedre klasse navn, bedre separasjon av metoder, bedre organisering, osv .... Dette er hva refactoring handler om -. Endring av eksisterende kode for bedre
definitive arbeidet med emnet er refactoring: Bedre design av eksisterende kode av Martin Fowler. I denne boken definerer Fowler refactoring som " bedre utforming av kode etter det har blitt skrevet. &Quot; Refactorings er formelle prosedyrer for å endre utformingen av eksisterende kode uten å endre atferden til koden. (Forresten, noen av Castalia er refactorings riktignok ikke egentlig refactorings, som de endrer oppførsel av koden).
Hensikten med denne artikkelen, er imidlertid ikke å Extol dydene av refactoring eller prøve å overbevise du at det er en god idé å begynne med. Jeg vil anta at du allerede forstår hvorfor refactoring er nødvendig, eller at du vil stole på meg når jeg sier at det er en god ting. Hva jeg virkelig ønsker å gjøre er å snakke om hva vi så når vi så folk refactoring kode for hånd, og refactoring kode med Castalia.
Når vi observert utviklere på jobb, vi la merke til at mange utviklere brukt en betydelig mengde av tid døpe ting eller omorganisere ting. Disse relativt enkle oppgaver kan ta dager i store prosjekter (tenk å måtte endre alle forekomster av TCustMan
til TCustomerMan
i 250.000 linjer med kode spredt over 300 filer).
Utviklere tok en rekke tilnærminger til dette. Mest brukte Delphi " Finn i filer " funksjonen til å finne alle forekomster av identifikator i spørsmålet, og deretter åpnet hver fil og brukes Delphi " Søk /Erstatt " dialogboksen for å endre teksten. Dette så ut til å være den mest effektive måten å gjøre det, selv om vi observere en annen interessant tilnærming: Noen utviklere vil bare endre navnet på erklæringen, og kompilere prosjektet. Når kompilere ville mislykkes med en utallig mengde " Undeclared Identifier " feil, de ville gå til hver enkelt og endre identifikatoren. Dette er den metoden foreskrevet av Fowler
Hadde utbygger som vi har snakket om hvordan man lager Castalia er ". Rename Class " ommøblerer å endre navn på hans klasse, ville ting vært veldig annerledes. Bruke Castalia automatiserte " Rename Class " refactoring, tar prosessen mindre enn ett sekund. Det er ikke egentlig en logisk måte å beskrive forbedring, siden ingen vil tro meg hvis jeg sier at vi kan bevise at Castalia kan tilby en produktivitetsøkning på 22 000% (1 sekund automatisert forhold til å ta 6 timer å gjøre for hånd) , selv om det er sant.
refactoring handler ikke bare om å døpe ting, men. Et annet vanlig eksempel er " Extract Method " refactoring, som vi har alle behov for på et eller annet tidspunkt. Dette er sannsynligvis den vanligste refactoring utført av " manuell " refactorings. Vi bruker dette når man metoden har blitt noe monolittisk og vi vet at deler av den bør deles inn i andre metoder. Vi klippe og lime, flytte variabler, legge til parametere, etc ... før koden er laget bedre, men atferden er ikke endret. Dette refactoring er generelt raskere enn døpe noen globalt brukt objekt, men det har interessant potensial til å introdusere feil som ikke var der før. Utviklere som lærte å bruke Castalia automatiserte " Extract Method " refactoring fant ut at de kunne få metoden utvinning gjort raskere, gjøre mindre arbeid for hånd, og drastisk redusere potensialet for å introdusere feil til nesten null.
Hvordan kan du se de samme produktivitetsnivå? Bruk refactoring verktøy. Selvfølgelig, det er lettere sagt enn gjort. I motsetning til strukturelle utheving eller syntakskontroll, gjør refactoring verktøy ikke hoppe ut på deg og si " bruke meg "!; Lære å gjenkjenne steder hvor refactorings kan brukes tar litt erfaring, men å vite hva som er tilgjengelig kan hjelpe mye. Castalia automatiserte refactorings er:

Gi nytt navn klasse - Endrer navnet på en klasse, endre alle referanser til klassen for å reflektere den klassen 'nye navnet.

Flytt klasse - Flytter en klassedefinisjon og alle dens metoder fra en enhet til en annen.

Gi nytt navn Metode - Endrer navnet på en prosedyre eller funksjon, og alle referanser til prosedyre eller funksjon.

Extract Method - Trekker ut en kode segment i en egen prosedyre, og erstatte den opprinnelige segmentet med en hensiktsmessig konstruert oppfordring til den nye prosedyren.

Gi nytt navn Lokal Variabel - Endrer 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 prosedyren og erstatter alle forekomster av variabelen med det enkle utsagnet.

Split midlertidig variabel - Når en variabel er tildelt mer enn én gang, er det ofte lurt å " split " den variable i to forskjellige variabler. Split midlertidig variabel automatiserer dette ved å legge en ny variabel til prosedyren og gjøre nødvendige endringer for å splitte de opprinnelige variable i to. (Jeg skrev en artikkel om dette tilbake i februar).

Finn Referanser (Ikke en sann refactoring) - gjør ikke noen endringer i koden, men finner alle referanser til en identifikator i prosjektet.

Surround Med ... (Ikke en sann refactoring) - Omgir et valgt kodeblokk med noen av en rekke standard konstruksjoner som try..except..end
hvis da begin..end
, osv .... Dette er ikke en ekte refactoring fordi det endrer atferden til koden, men vi kunne ikke finne et bedre sted å sette den.

Castalia automatiserte refactorings er ekte perle, og har gjort mange utviklere og mange utviklingsledere ganske fornøyd. Produktivitetsgevinsten fra å ha pent utformet kode er grenseløs. Benytte seg av Castalia automatiserte refactoring kan hjelpe utviklere forbedre sin kode raskt og uten tedium, slik at all kode, uansett hvor dårlig utformet, til å bli stor kode.
Dette markerer slutten på vår serie på Castalia bruk studien . Neste uke vil det være tid for noe helt annet!