Okiem JellyTech -> Java trick(s) 🤓
NullPointerException… czyli koszmar każdego programisty Javy. Na ratunek przychodzi rozwiązanie znane już od Javy 8 – klasa Optional. Natomiast w jaki sposób najlepiej posłużyć się tą klasą?
Zerknijmy na poniższy fragment kodu:
Interface UserRepository opisuje metodę „findByName”, która powinna zwracać Optional<User>. Czy napewno jest to dobra praktyka ? 🤔 Klasy implementujące powyższy interface będą udostępniały dość niewygodną metodę, której wynik może nie zawierać wartości, więc należy go będzie sprawdzić, aby uniknąć NullPointerException. Przykładowy kod mógłby wyglądać następująco:
czy w opakowaniu Optional znajduje się żądany obiekt a przypadku braku np. zgłosić wyjątek.
A może warto zastanowić się nad innym rozwiązaniem 🤔:
I właśnie teraz dochodzimy do pytania: Jeżeli w przypadku nie znalezienia obiektu chcemy zawsze zgłaszać standardowy wyjątek, który oczywiście powinniśmy przechwycić (odrębny temat rzecz jasna😊) to może jest to lepsze rozwiązanie??
Metoda defaultowa będzie miała na celu jak najszybszą walidację, a wrazie braku znalezienia obiektu rzuci wyjątkiem, co w jawny sposób deklaruje w sygnaturze metody.
Dzięki tej zmianie wywoływanie metody „findOrThrow” będzie miało dokładnie jedną linijkę i przy wprowadzaniu logiki biznesowej otrzymujemy bardzo czytelny zapis. Clean Code Rules!!! 😊😊😊
Przedstawiony przykład jest zachęceniem do głębszego przemyślenia tematu czytelności, prostoty oraz ciągłego rozwoju własnego kodu.