Mamy projekt w javie który pisany był naście lat, nie ma testów, wszystko lub bardzo dużo jest na statykach z efektami ubocznymi, dokumentacja oczywiście jest dawno nieaktualna, nazwy klas i metod mówią mało, klasy mają po kilka(naście) odpowiedzialności, a powiązania pomiędzy nimi są jak węzeł gordyjski.
Do tego jeszcze wielka baza danych w postaci normalniej ok 2, z webserviceami czy magicznymi polami w stylu "1000010101101011010101010111110111", gdzie każda jedynka oznacza włączoną flagę dla jakiejś aktywności z których część odbywa się bezpośrednio na bazie poprzez procedury i inne natywne ciekawostki, a część w kodzie aplikacji.
Czy jest realna możliwość refaktoryzacji takiego systemu?
Wiadomo, że sporo osób powie, że trzeba przepisać, ale jednak jak coś powstawało naście lat to przepisanie tego też nie zajmie roku czy dwóch, tym bardziej gdy nie wiadomo co to właściwie robi, ani nie ma acceslogów mówiących co jest faktycznie potrzebne, a co jest fanaberią.
Stąd pytanie, czy nie lepiej poświęcić tych ponad dwóch lat na gruntowne sprzątanie?
Nie wiem tylko czy to jest zawsze możliwe.
Tzn nie chodzi mi nawet o doprowadzenie systemu do postaci jak z książek i tutoriali o refaktoringu gdzie kod czyta się jak książkę i od razu wiadomo co dany kawałek robi, ale przynajmniej do postaci pozwalającej na wyodrębnienie kawałków których się nie zmienia i jakoś to wszystko działa do oddzielnych blackboxowych modułów których kod i zależności nie będą zaciemniać i przeszkadzać w tych częściach systemu w których zmiany się dokonują.