
Tym razem sparafrazuję Martina autocytatem:
Refaktoryzacja to sekwencja niewielkich zmian polepszających strukturę oprogramowania bez zmiany jego działania — o czym świadczy pomyślne wykonywanie się kompleksowego zestawu testów po każdej zmianie dokonanej w tej sekwencji.
Definicja ta obejmuje dwie istotne kwestie.
Po pierwsze, przy refaktoryzacji zachowywane jest działanie oprogramowania. Zarówno po jednej refaktoryzacji, jak i po całej ich serii jego funkcjonowanie pozostaje niezmienione. Jedynym znanym przeze mnie sposobem, by tego dowieść, jest regularne pomyślne przechodzenie zestawu kompleksowych testów.
Po drugie, każda refaktoryzacja jest niewielka. Co to znaczy? Oto instrukcja: ma być na tyle drobna, by nie trzeba było jej debugować.
Istnieje wiele specyficznych technik refaktoryzacji, a na kolejnych stronach opiszę niektóre z nich. W kodzie można dokonać także wielu innych zmian nie zawartych w kanonie refaktoryzacji, które jednak przy modyfikacji struktury zachowują jej działanie. Niektóre refaktoryzacje są tak schematyczne, że może je przeprowadzać środowisko IDE. Niektóre są na tyle proste, że można ich bez obaw dokonywać ręcznie. Niektóre wreszcie są bardziej skomplikowane i wymagają znacznej dbałości. W tym ostatnim przypadku postępuję według wcześniej wspomnianej instrukcji. Jeśli obawiam się, że w końcu będę musiał użyć debugera, dzielę zmianę na mniejsze, bezpieczniejsze części. Jeśli mimo wszystko trafiam do debugera, koryguję swój próg obaw i staram się zachować większą ostrożność.
Zasada nr 15. Unikaj debugera.
Celem refaktoryzacji jest oczyszczenie kodu. Odbywa się to w procesie czerwone → zielone → refaktoryzacja. Jest to działanie ciągłe, a nie figurujące w rozkładzie czy zaplanowane. Czystość kodu jest utrzymywana w ciągłej pętli czerwone → zielone → refaktoryzacja.
Niekiedy zachodzi potrzeba dokonania refaktoryzacji w szerszym zakresie. W sposób nieunikniony struktura systemu wymaga z czasem aktualizacji i tę zmianę projektową trzeba wprowadzić w treści kodu. Nie umieszczaj tego w harmonogramie. Nie przestawaj dodawać funkcji i poprawiać błędów. Włóż po prostu w cykl czerwone → zielone → refaktoryzacja nieco dodatkowych wysiłków i stopniowo wprowadzaj wymagane zmiany, nieprzerwanie dostarczając wartość biznesową.