Temat trochę pokrewny do poprzedniego o długu technicznym, ale jednak tym razem chodzi mi o coś szerszego.
Powiedzmy, że zespół osiągnął konsensus, że kod to kupa mułu i podjął decyzję: REFAKTORUJEMY. Np. zamieniamy wszędobylski static i singletony na DI.
No i teraz jak to zrobić dobrze?
-
Bierzemy tego kto zaproponował pomysł refaktoringu, dajemy mu pół roku i biedaczysko poprawia aż będzie dobrze, oczywiście w swojej gałęzi. Jak skończy - robimy wielkie review, dajemy kolejne 3 miesiące na uwzględnienie uwag i naprawienie konfliktów i po kolejnych 3 miesiącach w końcu mamy merge i możemy świętować.
-
Przerabiamy kod stopniowo - najpierw dodajemy nowa infrastrukturę, potem przerabiamy komponent po komponencie, każdy zespół przerabia swój komponent na nową metodę. Jak już wszystkie komponenty są ok, wywalamy ewentualnie resztki starego kodu, który nie jest już potrzebny i robimy merge.
-
Robimy jeden komponent, merge, oczekujemy trochę na stabilizację, robimy kolejny, znowu merge itd. W międzyczasie w kodzie musimy utrzymywać infrastrukturę dla obu sposobów - czyli niektóre rzeczy mają statici a niektóre są przeniesione na nowy framework. Możliwe, że po drodze trzeba stworzyć jakieś warstwy kompatybilności. Sprzątamy dopiero na końcu jak wszystkie komponenty są przeniesione.
-
Inne. Jakie?