Cześć, jestem aktualnie w projekcie w którym każda metoda w interfejsach repository jest okraszona Optionalem, co bardzo mi się nie podoba bo w każdym miejscu gdzie pobieram jakieś rekordy muszę robić sprawdzanie czy zapytanie coś zwróciło i jeśli nie, zwrócić kod błędu zapakowany w obiekt Response:
Optional<Company> optCompany = companyRepo.findById(id);
if(!opt.Company.isPresent()){
return Response.create(ResultCode.COMPANY_NOT_EXIST);
}
Company company = optCompany.get();
problem pojawia się gdy takich sprawdzeń mam na przykład 3 co bardzo zaśmieca kod moim zdaniem i metodka która powinna mieć 5 linijek nagle ma 1500. W niektórych przypadkach takie optionale są przydatne, na przykład gdy pobieramy rekord który może w wyniku działań jakiegoś innego użytkownika zostać usunięty, ale w przypadku gdy chodzi o Company to usunięcie takiego rekordu to już grubsza sprawa i myślę że nie trzeba tego za każdym razem sprawdzać. Z drugiej strony usunięcie tego optionala spowoduje, że musiałbym zmienić kod w jakichś 50 miejscach (x2 bo testy, x <ilość zapytań do przerobienia>). poza tym nie chcę za bardzo ruszać starego kodu. Czy dałoby się to jakoś obejść w taki sposób żeby dorobić kolejny interfejs jakoś? W którym byłyby te same metody typu findById ale zwracały by samą encję bez Optional? Jak mogę to ugryźć?