WOW!
I would recommend: write unittests and then start refactoring
* public fields, no getters/setters
start by making them confidential and "feel" the resistance of compiler errors as a metric.
* huge methods, all public
understand their semantics, try to introduce interfaces
* some classes have over 20 fields
very common in complex applications, nothing bothers
* some classes have over 5 constructors (which are also huge)
replace them with buider / creator pattern
* some of those constructors just left many fields null
see above answer
* methods and classes rely on each other in both directions
decide whether to rewrite everything (to be honest, I came across a cover where only 10% of the code was required)
source share