Vylepšujte. Neustále. Refaktoring dává vývojářům křídla
Čtvrtý díl seriálu o agilním řízení, který se zaměřuje na techniky, jež dokážou proměnit velké týmy a složité projekty v efektivní a spolupracující systémy. Jako další přichází na řadu metoda zvaná refaktoring.
Ve vývoji softwaru jde o zásadní aktivitu, která pomáhá udržovat kód čistý, čitelný a efektivní. Jedná se o přepisování kódu, přičemž se jeho funkce nemění, ale zlepšuje se struktura a provedení. Uživatel si těchto změn obvykle nevšimne, pro vývojáře má však každý krok směřující k lepšímu kódu zásadní význam. Refaktoring můžeme přirovnat k průběžnému úklidu kuchyně při vaření.
Uklizené nádobíčko
Pokud si kuchař uklízí nástroje, nádoby a suroviny průběžně, má lepší přehled a jeho práce je efektivnější. Jakmile by úklid odkládal až na konec, riskoval by chaos, který by ho zpomaloval a zvyšoval pravděpodobnost chyb. Podobně v softwarovém vývoji platí, že průběžný refaktoring zajišťuje, že kód se snadno udržuje a je snadno pochopitelný.
Stejně jako u metod specification by example a trunk-based development jsou i tady stěžejní automatické testy. Slouží jako záchytná síť, která odhalí chyby způsobené změnami kódu. Bez nich by bylo těžké refaktoring provádět průběžně – každá změna by znamenala riziko chyb, jež se často projeví až mnohem později. Bez testů se refaktoring mění v jednorázovou akci, která vyžaduje velké množství času a zdrojů – a to je něco, čemu se v agilním řízení snažíme vyhnout.
První z těchto kroků spočívá v napsání kódu, který plní požadovanou funkci. Zkrátka aby fungoval bez ohledu na čistotu nebo efektivitu kódu. Jakmile kód funguje, dalším krokem je odstraňování duplicit, zjednodušování struktur a zlepšení jeho čitelnosti. Tento krok zajišťuje, že kód bude pochopitelný pro budoucí úpravy. V poslední fázi jde o zrychlení, chcete-li o optimalizaci výkonu: například zrychlení algoritmů nebo odstranění zbytečných částí kódu.
Jak už jsem zmínil, klíčovou součástí refaktoringu jsou automatické testy. Poskytují nástroj, který pomáhá odhalit chyby způsobené změnami kódu. Bez nich by každá úprava představovala riziko, že nově přidané nebo upravené části kódu naruší funkčnost již existujících částí. Umožňují vývojářům okamžitě zjistit, zda změny kódu způsobily chyby, a pomáhají udržet stabilitu softwaru i během větších změn. Pokud je kód pokrytý testy, vývojáři se nebojí provádět průběžné úpravy. Jejich absence naopak vede k odkládání refaktoringu, což může postupem času způsobit hromadění technického dluhu.
Posledním principem, který chci zmínit, je Make the change easy before making the easy change. O co jde? Předtím, než uděláme zamýšlenou změnu, je třeba vytvořit podmínky, které tuto změnu usnadní. Opět zde můžeme sledovat trojici nástrojů či metod.
Refaktoring by neměl být jednorázovou aktivitou, kterou provádíme až tehdy, když je situace kritická. Správně nastavený proces zahrnuje průběžné zlepšování kódu jako přirozenou součást každodenní práce. To nejen minimalizuje riziko vzniku technického dluhu, ale také umožňuje rychlejší reakce na změny požadavků.