Kiedy twoje wnętrzności mówią ci, że powinieneś zrobić pewne refaktoryzacje, to prawdopodobnie twoje instynkty mówią ci trochę za późno, że odkładasz coś ważnego zbyt długo.
Rozumiem „zapachy kodowe”, refaktor czerwono-zielony i inne myśli, ale często wydaje mi się, że najlepszym czasem na refaktoryzację nie jest pierwszy raz, kiedy piszesz kod, ale drugi lub trzeci raz, kiedy używasz kodu i zdajesz sobie sprawę że tak naprawdę jest to problem i jest w użyciu.
Istnieją dwa poziomy refaktoryzacji. Pierwszy to oczywiste problemy, które pojawiają się przy pierwszym kodowaniu. Są to małe optymalizacje, które bardzo niewiele kosztują z góry. Rzeczy takie jak utrzymywanie małych metod i klas oraz przestrzeganie zasad DRY i SRP. Następnie masz dodatkowy etap radzenia sobie z poważnymi wadami twojego projektu, które mogą nie być od razu widoczne, dopóki twój kod nie znajdzie się pod nim kilka mil. To ten drugi poziom, o którym mówisz, a jednak aby upewnić się, że późniejsze refaktoryzacja nie będzie zbyt kosztowna, musisz już napisać swój kod w taki sposób, aby wysiłek, który później przewidujesz, był łatwiejszy i mniej kosztowny, co oznacza wcześniejsze przeprowadzenie refaktoryzacji.
Jak wspomniał Jeff w swojej odpowiedzi, „czas to pieniądz” , szczególnie w firmach, w których obciążenie pracą jest wysokie, a ryzyko jeszcze większe. Czas spędzony z góry na upewnieniu się, że kod jest w najlepszym możliwym stanie, oszczędza czas później, gdy dowodzenie, co powinno być łatwym refaktoryzacją, okazuje się poważną operacją.
Pisząc oprogramowanie, każda chwila spędzona na ulepszaniu kodu z góry oszczędza czas później, kiedy naprawdę będziesz go potrzebować. Im wcześniej dokonamy refaktoryzacji, tym wyraźniejsze będą późniejsze zmiany. To jak wpłacanie zaliczki w dzisiejszych dolarach w stosunku do przyszłego zadłużenia technicznego, które będzie w jutrzejszych zawyżonych dolarach.
W każdym razie refaktoryzacja nie powinna być zadaniem, które odkładasz do tajemniczej przyszłości, gdy oprogramowanie jest już kompletne i stabilne, ponieważ zwiększa to ryzyko później, gdy stawki są znacznie wyższe, a produkt znacznie trudniejszy do zmiany. Refaktoryzacja powinna być częścią codziennych czynności, a to jest esencja wspomnianej przez ciebie filozofii Refaktora Czerwono-Zielonego.