Jak refaktorovat starý kód?
Recept na aplikaci, která má v sobě pár let technologického dluhu, je většinou dost podobný. Dvacet různých programátorů, z toho minimálně dva, co byli přesvědčeni o svých geniálních analytických schopnostech, pár těsných deadlinů na kritické komponenty v minulosti a nespočítaně pronesených a dobře myšlených utěšení typu "to je jen dočasný hack". Jaké je tajemství toho, jak program zkrotit tak, aby se zas dobře programoval?
Strach z hydry
Prozradím to hned na začátku: Nebát se. Pokud jste tak daleko, že přemýšlíte o refactoringu nebo dokonce o přepisování aplikace, pravděpodobně to znamená, že na to máte i kapacitně. Na strach z toho, že něco rozbiju mi hodně pomáhá gumová kachnička. Od počítače začnu popisovat třeba květináči na stole, proč změnu chci udělat, co zasáhne, proč to nevadí atd. Na konci zjistím, že počet potenciálních problémů je mnohem menší než jsem na začátku předpokládál, a co důležitěji, vím kde jsou a na co se mám připravit.
Když se nebudete zastavovat nad obavami (ale naopak je začnete rychle odbavovat) jako je nedostatek času, kolize s jiným týmem, závislost na jiné službě, potřeba aby někdo další udělal kus práce (ať už obchoďák, programátor nebo systémák), všechno půjde mnohem svižněji.
Nocando is in Idontwanna county.
Na závěr tip
Jednou za týden si založím soukromou branch, kde se zkouším popasovat s jedním izolovaným problémem. Např. oddělit jednu část z velké monstr třídy, otestovat první z padesáti frontendových Javascriptů, zavést DI pro novou komponentu, oddělit unit testy od integračních. Jen část z nich se někdy dostane na produkci, čím dál častěji se mi ale stává, že když narazíme na problém, zjistím, že už ho mám vyřešený a vím jak na něj.