Heim > Java > javaLernprogramm > Hauptteil

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

Susan Sarandon
Freigeben: 2024-10-27 07:23:29
Original
358 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!