Odziedziczyłem istniejącą bazę kodu dla produktu, który jest nagle niechlujny. Podstawowy projekt jest bardzo nieodpowiedni, na co niestety niewiele mogę poradzić bez kompletnego refaktora (WYSOKIE sprzężenie, NISKA spójność, gwałtowne powielanie kodu, brak dokumentacji technicznej projektu, testy integracyjne zamiast testów jednostkowych). Produkt ma historię, wysoką ekspozycję na krytycznych klientów „krów gotówkowych” z minimalną tolerancją na ryzyko, dług techniczny, który sprawi, że Grecy się rumienią, BARDZO duża baza kodów i złożoność, a także zmęczone walką defetystyczne podejście do błędów przez zespół wcześniej mnie.
Stara drużyna wskoczyła na statek do innej dywizji, aby mieć szansę zrujnowania kolejnego projektu. Bardzo rzadko zdarza się awaria projektu dotycząca niekompetencji technicznej w przeciwieństwie do niepowodzenia zarządzania projektem, ale jest to rzeczywiście jeden z tych przypadków.
W tej chwili jestem sam, ale mam dużo czasu, swobodę decyzji i przyszłe kierunki oraz umiejętność zbudowania zespołu od zera, aby mi pomóc.
Moim pytaniem jest zebranie opinii na temat refaktoryzacji o niskim wpływie na taki projekt, kiedy masz trochę wolnego czasu podczas fazy zbierania wymagań funkcjonalnych. Istnieją tysiące ostrzeżeń kompilatora, prawie wszystkie nieużywane importy, nieprzeczytane zmienne lokalne, brak sprawdzania typu i niebezpieczne rzutowania. Formatowanie kodu jest tak nieczytelne i niechlujne, że wygląda na to, że programista cierpiał na chorobę Parkinsona i nie był w stanie kontrolować liczby naciśnięć spacji w danym wierszu. Dalsze zasoby bazy danych i plików są zwykle otwierane i nigdy nie zamykane bezpiecznie. Bezcelowe argumenty metod, zduplikowane metody, które robią to samo itp.
Podczas gdy czekam na wymagania dotyczące następnej funkcji, od czasu do czasu czyszczę rzeczy o niskim wpływie i niskim ryzyku i zastanawiam się, czy marnuję czas, czy robię właściwą rzecz. Co jeśli nowa funkcja oznacza zgrywanie kodu, nad którym spędziłem wcześniej czas? Mam zamiar rozpocząć podejście zwinne i rozumiem, że jest to akceptowalne i normalne, aby stale refaktoryzować podczas rozwoju zwinnego.
Czy potrafisz wymyślić jakieś pozytywne lub negatywne skutki mojego działania, które chciałbyś dodać?