Absolutnie.
Refaktoryzacja powinna zostać przeprowadzona w działającym i „pozytywnym” projekcie. Po przejściu wszystkich testów (na poziomie urządzenia, systemu i akceptacji) wiesz, że Twój produkt spełnia wymagania. Po refaktoryzacji możesz nadal potwierdzać, że wszystkie testy są zaliczane. Jeśli jakikolwiek test zaczyna się nie powieść, zrobiłeś coś złego i musisz to poprawić. Jeśli masz testy negatywne, powinieneś je poprawić przed refaktoryzacją, aby zawsze mieć pewność, że refaktoryzacja nie zmienia funkcji systemu.
Jest to również idealny czas na refaktoryzację, zakładając, że masz czas i zasoby, aby przeprowadzić refaktoryzację, a jednocześnie zapewnić terminowość i budżet. Refaktoryzacja ułatwi teraz zrozumienie i utrzymanie systemu, więc wraz z dodawaniem nowych funkcji staje się łatwiejsze. Musisz walczyć z gniciem kodu i entropią oprogramowania .
Jak zauważa Joel Etherton w komentarzach, musisz zarządzać zakresem refaktoryzacji. Skoncentruj się na refaktoryzacji części systemu, do których wkrótce będziesz dodawać funkcje, wykonując refaktoryzację, która ułatwi pracę lub dodanie nowych funkcji. Korzystanie z analizy statycznej, narzędzi pomiarowych i przeglądów kodu może pomóc w zidentyfikowaniu obszarów o największym znaczeniu. Nie chcesz przekraczać terminów, ponieważ dokonałeś refaktoryzacji - nadal musisz zwiększać wartość dodaną dla klienta.
Wspominasz, że klient nie widzi wartości w refaktoryzacji. Zazwyczaj klient nie dba o jakość kodu, ale o produkt. Refaktoryzacja ułatwi utrzymanie wysokiej jakości produktu i dostarczanie produktu spełniającego zmieniające się potrzeby klienta. Spróbuj wynegocjować czas na refaktoryzację w swoim harmonogramie (klient chce funkcji X w Y dni, spróbuj sprawdzić, czy nie możesz uzyskać dni Y + Z lub XN, abyś mógł poświęcić czas na projektowanie, refaktoryzację i wdrożenie), jeśli mogą.