Pomysł na refactor - usprawnienie jedenej linijki

0

Jak w temacie, czy da się to napisać lepiej, ładniej, może z uzyciem javy 8?

 String id = wa != null && wa.getAdditionalInfo() != null ? wa.getAdditionalInfo().getId() : null;
0

W jakich okolicznościach w ogóle taki potworek powstał?

3

Normalny człowiek miałby tam optionale zamiast nulli i byłoby po prostu:

Optional<String> id = wa.map(X::getAdditionalInfo).map(Y::getId);

Jeśli nie były puste to dostaniemy wyopełnionego optionala z tym id, a jeśli były puste to dostaniemy pustego. A ty jeszcze genialnie chcesz powielać to nullowe szaleństwo i zwrócic tutaj kolejnego nulla...

0

Gdyby odtworzyć idealnie logikę z linijki to byłoby coś w stylu:
Optional<String> id = Optional.ofNullable(wa).flatMap(w->Optional.ofNullable(w.getAdditionalInfo()).map(x->x.getId());

Natomiast ja wylałbym te ofNullable (i byłoby jak u @Shalom) - jesli ktoś Ci do metody przekazuje nulla to bardzo stylowo jest go przywitać NullPointerExceptionem; niech sie uczy kultury.

1 użytkowników online, w tym zalogowanych: 0, gości: 1