Refaktorointi ”Te olette tehneet tätä ennenkin”
Mitä on refaktorointi? (1/2) prosessi ohjelmakoodin laadun parantamiseksi ohjelman sisäisen rakenteen parantamista ilman ulkoisesti havaittavaa toiminnallisuuden muuttumista koodin systemaattista siistimistä tehokkaalla ja ohjatulla tavalla
Mitä on refaktorointi? (2/2) koodista tunnistetaan hajujen perusteella refaktorointia vaativat kohdat valmiiden mallien (refaktorointien) järjestelmällistä noudattamista ainoastaan sellaiset muutokset, jotka parantavat ohjelman rakenteen (koodin) ymmärtämistä ovat refaktorointeja
Refaktorointiprosessi 1.Tunnistetaan refaktorointia vaativa koodi hajun perusteella 2.Varmistetaan yksikkötestien olemassaolo 3.Tehdään muutokset koodiin 4.Testataan yksikkötesteillä 5.Korjataan kunnes testit menevät läpi Refaktoroinnin aikana ei lisätä ominaisuuksia!
Esimerkkihajuja Toisteista koodia –sama rakenne useammassa kuin yhdessä paikassa –refaktoroidaan käyttämällä ”Extract Method”:ia Pitkä metodi (funktio) –jos metodia on kommentoitu paljon, se on yleensä liian pitkä –”Extract Method”, ”Decompose Conditional”
Esimerkkirefaktorointi Extract Method
Miksi tai miksi ei? Edut Parantaa ohjelman rakennetta Ohjelmakoodia on helpompi ymmärtää Tekijä oppii tuottamaan parempaa koodia Ohjelmointi nopeutuu? Haitat Toimivan koodin muuttaminen on aina riski Refaktoroinnilla ei voi pelastaa toimimatonta ohjelmakoodia Vie ainakin aluksi enemmän aikaa
Refaktorointi Verkokaupassa Lukekaa Refaktorointi-personalSE-dokumentti (tulossa) Tehdään jatkuvasti, ei pidetä refaktorointisessioita, paitsi jos refaktorointia ei muutoin oteta käyttöön. Keskitytään pääosin muutamaan tärkeimpään hajuun ja malliin aluksi PHP:n luonteen takia valmiita malleja pitää soveltaa Tavoitteena oppina tunnistamaan yleisimmät hajut ja käyttämään niihin sopivia refaktorointeja
Refaktoroinnin mittaus Refaktorointia ei voi mitata numeerisesti –tunteja ei pidä kirjata erikseen, koska refaktorointia tehdään muun ohjelmoinnin lomassa (”rooli” vaihtuu tiheään) Ohjelmakoodin subjektiivinen analyysi –I1 vaiheen koodien vertailu myöhempiin vaiheisiin Ryhmän jäsenten haastattelu
Lisätietoa Refactoring Home Page Fowler, Martin et al.. Refactoring: Improving the design of existing code. Addison-Wesley, 1999.