Problem z robieniem poważnego refaktoryzacji polega na tym, że możesz i czasami podążasz ścieżką, która prowadzi cię do zrozumienia, że odgryzłeś więcej niż możesz przeżuć. Wielkie refaktoryzacje są błędem. Jeśli projekt systemu jest wadliwy, to refaktoryzacja może zająć Ci tylko tyle czasu, zanim będziesz musiał podjąć trudną decyzję. Albo zostaw system bez zmian i obejdź go, albo zaplanuj przeprojektowanie i dokonaj poważnych zmian.
Jest jednak inny sposób. Prawdziwą zaletą refaktoryzacji kodu jest uproszczenie, łatwiejszy do odczytania, a nawet łatwiejszy w utrzymaniu. Gdy podejdziesz do problemu, którego nie masz pewności, zmieniasz zmianę, idziesz tak daleko, aby dowiedzieć się, gdzie może to prowadzić, aby dowiedzieć się więcej o problemie, a następnie wyrzucasz skok i zastosujesz nowe refaktoryzowanie w zależności od tego, co to skok nauczył cię. Chodzi o to, że naprawdę możesz poprawić swój kod z pewnością tylko wtedy, gdy kroki są małe, a wysiłki związane z refaktoryzacją nie przerastają twojej zdolności do pisania testów. Pokusa polega na napisaniu testu, następnie napisaniu kodu, a następnie napisaniu kodu, ponieważ rozwiązanie może wydawać się oczywiste, ale wkrótce zdajesz sobie sprawę, że twoja zmiana zmieni wiele innych testów, więc musisz uważać, aby zmieniać tylko jedną rzecz na raz.
Dlatego odpowiedzią jest, aby nigdy nie uczynić swojego refaktoryzacji ważnym. Dziecięce kroki. Zacznij od wyodrębnienia metod, a następnie spójrz na usunięcie duplikacji. Następnie przejdź do wyodrębniania klas. Każdy krok po kroku, drobna zmiana. JEŚLI wyodrębniasz kod, najpierw napisz test. Jeśli usuwasz kod, usuń go, uruchom testy i zdecyduj, czy którykolwiek z uszkodzonych testów będzie potrzebny. Jeden mały krok po kroku. Wydaje się, że zajmie to więcej czasu, ale w rzeczywistości znacznie skróci czas refaktoryzacji.
Rzeczywistość jest jednak taka, że każdy skok wydaje się potencjalnie stratą wysiłku. Czasami zmiany kodu nigdzie nie idą, a ty przywracasz kod z vcs. To tylko rzeczywistość tego, co robimy z dnia na dzień. Każdy kolec, który zawodzi, nie jest jednak marnowany, jeśli czegoś cię nauczy. Każdy wysiłek refaktoryzacji, który się nie powiedzie, nauczy cię, że albo próbujesz zbyt szybko zrobić zbyt wiele, albo że twoje podejście może być błędne. To też nie jest strata czasu, jeśli się czegoś nauczysz. Im częściej to robisz, tym więcej się uczysz i tym bardziej będziesz efektywny. Moja rada to po prostu na razie go nosić, nauczyć się robić więcej, robiąc mniej, i zaakceptować, że tak właśnie powinno być, dopóki nie będziesz w stanie lepiej określić, jak daleko zaostrzyć skok, zanim nigdzie cię to nie zaprowadzi.