Pomysł na refactor - usprawnienie jedenej linijki

Pomysł na refactor - usprawnienie jedenej linijki
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Kopiuj
 String id = wa != null && wa.getAdditionalInfo() != null ? wa.getAdditionalInfo().getId() : null;
Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

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

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
3

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

Kopiuj
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...

jarekr000000
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: U krasnoludów - pod górą
  • Postów: 4714
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.