Najpierw zadbaj o podstawy kodu: semantyke, potem proś kogoś o code-review, bo żeby tracić czas na CR - stosować "wzorce" czy zastosowania, najpierw ... wypadałoby trzymać się chociaż paradygmatów podstawowych programowania obiektowego, czy programowania w javie z zachowaniem np - bardziej deklaratywnego sposobu pisania niż imperatywnego, co bardziej pójdzie w strone funkcyjnego pisania w Javie, ale z kolei - pozwoli na przejrzystosć kodu, czy też stosowanie pragmatycznego i "języka prozy" aby łatwiej było zrozumieć.
Dodatkowo jak się na coś decydujesz, to korzystaj z bibliotek już "dla konkretnej " wersji Javy, a nie tak, że w jednych klasach masz Utils z jdk 8 np, a w innych zastosowania z JDK 11- ja wiem, że akurat to jest :D spowodowane brakiem wiedzy na tej płaszczyźnie.