Podczas wykonywania operacji na bazie danych w razie wystąpienia "błędu" (nie pobrania np sklepu o podanym id) lepiej jest zwrócić boola czy rzucić wyjątek?
To zależy czy jest to sytuacja wyjątkowa. ;) ?
Lepiej jest zwrócić optionala.
Lepiej zwrócić nulla ;)
W czystym kodzie piszą, by nie zwracac nulla ;p
Jak dojdziesz do. Mistrza Czystego Kodu to się dowiesz, że jedną z praw prawdziwego TDD to pokrycie w 100% procent twojego kodu Uint Testami. :) Morał z tego taki, że bobek sprzedaje jedynie czyjąś wiedzę i czasami robi to nieudolnie.
Zawsze lepiej jest jeśli możemy uniknąć zgłaszania wyjątków i takiej zasady powinniśmy się trzymać .
Zresztą , praktyka czyni mistrza . Sam się przekonasz w praktyce jak jest lepiej .
Jeśli to użytkownik podaje dane do wyszukiwania i aplikacja ich nie znajduje, to jest to normalna sprawa i zwracamy pustą kolekcję znalezionych obiektów, albo pusty obiekt (niekoniecznie null
).
Jeżeli zaś oczekujemy, że dany rekord w bazie istnieje, a go nie ma (dane magicznie wyparowały z bazy), to jest to sytuacja wyjątkowa, oznaczająca prawdopodobnie jakiś błąd w systemie, więc niby można rzucić wyjątek. Chociaż ja bym tak tego nie zaimplementował tylko zwrócił jakiś np. enum oznaczający nieprawidłowy wynik operacji.
a nie lepiej stworzy takie MethodResponse gdzie beda wlasciwosci: IsAccepted jesli wszystko ok to dane beda w drugiej wlasciwosci Data a jesli nie ok to bledy sa w kolejnej wlasciwosci RejectReasons na przyklad i za pomoca takiego obiektu komunikujemy sie miedzy metodami czy to metoda a repozytorium
Przecież jeśli operacja się nie powiedzie, to biblioteka, którą używasz, sama zwróci wyjątek. Więc po co robić jakieś dodatkowe ceregiele ?