Heim >Java >javaLernprogramm >Wie man Null-Checks in Getter-Ketten ordnungsgemäß handhabt: Optional vs. Demeter-Gesetz?

Wie man Null-Checks in Getter-Ketten ordnungsgemäß handhabt: Optional vs. Demeter-Gesetz?

Susan Sarandon
Susan SarandonOriginal
2024-10-27 07:23:29424Durchsuche

How to Gracefully Handle Null Checks in Getter Chains: Optional vs. Law of Demeter?

Elegante Handhabung von Nullprüfungen in Ketten von Getter-Aufrufen

In der Softwareentwicklung kommt es häufig vor, dass Sie auf Situationen stoßen, in denen Sie Getter verketten müssen Aufrufe wie:

<code class="java">house.getFloor(0).getWall(WEST).getDoor().getDoorknob();</code>

Solche Ketten können jedoch anfällig für NullPointerExceptions sein, wenn eines der Objekte entlang der Kette null ist. Um dem vorzubeugen, greifen Entwickler oft auf langwierige If-Null-Prüfungen zurück, was zu unnötiger Komplexität und Codeduplizierung führt.

Alternative Ansätze

Es gibt zwar keine Out-of- the-box-Dienstprogrammklasse in Java, um dieses Problem zu lösen, gibt es elegante Alternativen:

Gesetz der Demeter-Verletzung

Wie von @Erwin Bolwidt vorgeschlagen, können Sie das brechen Law of Demeter (LoD) und greifen Sie direkt auf die verschachtelten Eigenschaften zu:

<code class="java">if (house != null && house.floors != null && house.floors[0] != null && house.floors[0].walls != null && house.floors[0].walls[WEST] != null) ...</code>

Von diesem Ansatz wird abgeraten, da er das Kapselungsprinzip verletzt und die Codekomplexität erhöht.

Optional mit Java 8

Java 8 hat den optionalen Typ eingeführt, der Ihnen den eleganteren Umgang mit Nullen ermöglicht. Sie können jeden Getter-Aufruf in ein optionales Paket einbinden:

<code class="java">Optional.ofNullable(house)
        .map(house -> house.getFloor(0))
        .map(floor -> floor.getWall(WEST))
        .map(wall -> wall.getDoor())
        .map(door -> door.getDoorknob());</code>

Dieser Ansatz macht explizite Nullprüfungen überflüssig und bietet eine prägnantere und aussagekräftigere Syntax.

Fazit

Während es kein integriertes Dienstprogramm zum Überprüfen von Nullen in Getter-Ketten gibt, bieten der optionale Typ und die Verletzung des Gesetzes von Demeter flexible und kontextabhängige Lösungen. Die Wahl des besten Ansatzes hängt vom spezifischen Szenario und den Designprinzipien des Projekts ab.

Das obige ist der detaillierte Inhalt vonWie man Null-Checks in Getter-Ketten ordnungsgemäß handhabt: Optional vs. Demeter-Gesetz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn