Odziedziczyłem taki oto system.
Jest sobie klasa bazowa dajmy na to A, jest ona dodatkowo encją bazodanową (@Entity), ma ona kilka tam pól odwzorowanych w bazie danych. Ponadto niestety jest tam kilka-kilkanaście metod odpowiedzialnych za pewne funkcjonalności.
Klasa ta ma kilka klas pochodnych, rozszerzających klase A, ktore praktycznie nie mają pól odwzorowanych w bazie danych, ale też są encjami (pewnie tylko dlatego by był łatwy dostep do bazy danych). Przesłaniają te klasy 4-5 metod odpowiedzialnych za funkcjonalność, z klasy A + mają kilka prywatnych. Te przeslaniane metody wolaja zewnetrzne serwisy.
Główna funkcjonalność aplikacji to serwis, który wywołuje w okreslonej kolejności kilka metod z klasy A (lub przez póżne wiązanie te same metody z tych klas pochodnych).
Powiedzmy, że ta klasa A ma własnie kilka klas pochodnych, lepszej i gorszej jakości.
Próba refactoru jednej z nich jest bardzo bolesna, bo nie wiele można tak naprawdę poprawić.
Macie pomysł jak zacząć to poprawiać (z głową), by możliwie trochę poprawić jakość nie pisząc wszystkiego od nowa :)