Null-check chain vs Fang NullPointerException

Einen web service gibt eine riesige XML-und ich brauche Zugriff auf tief verschachtelte it-Bereichen. Zum Beispiel:

return wsObject.getFoo().getBar().getBaz().getInt()

Das problem ist, dass getFoo(), getBar(), getBaz() können alle zurück null.

Jedoch, wenn ich die Option für null in allen Fällen, der code wird sehr ausführlich und schwer zu Lesen. Außerdem, ich kann miss die Prüfungen für einige der Felder.

if (wsObject.getFoo() == null) return -1;
if (wsObject.getFoo().getBar() == null) return -1;
//maybe also do something with wsObject.getFoo().getBar()
if (wsObject.getFoo().getBar().getBaz() == null) return -1;
return wsObject.getFoo().getBar().getBaz().getInt();

Ist es akzeptabel, zu schreiben,

try {
    return wsObject.getFoo().getBar().getBaz().getInt();
} catch (NullPointerException ignored) {
    return -1;
}

oder wäre das als ein antipattern?

  • Ich würde nicht dagegen die null überprüft, dass viel, da wsObject.getFoo().getBar().getBaz().getInt() ist bereits ein code smell. Lesen Sie, was die "Law of Demeter" ist und lieber überarbeiten Sie Ihren code entsprechend. Dann das problem mit der null Kontrollen werden so gut gegangen. Und denken über die Verwendung Optional.
  • Was ist mit XPath und verlassen Sie es, um Ihre Bewertung?
  • Dieser code wird wohl erzeugt durch wsdl2java ist, hat kein Respekt für das Gesetz von Demeter.
InformationsquelleAutor David Frank | 2016-06-22
Schreibe einen Kommentar