Maison > Java > javaDidacticiel > Comment gérer gracieusement les contrôles nuls dans les chaînes Getter : facultatif par rapport à la loi de Déméter ?

Comment gérer gracieusement les contrôles nuls dans les chaînes Getter : facultatif par rapport à la loi de Déméter ?

Susan Sarandon
Libérer: 2024-10-27 07:23:29
original
423 Les gens l'ont consulté

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

Gestion élégante des contrôles nuls dans les chaînes d'appels Getter

Dans le développement de logiciels, il est courant de rencontrer des situations où vous devez enchaîner des getter appels, tels que :

<code class="java">house.getFloor(0).getWall(WEST).getDoor().getDoorknob();</code>
Copier après la connexion

Cependant, ces chaînes peuvent être sensibles aux NullPointerExceptions si l'un des objets le long de la chaîne est nul. Pour se prémunir contre cela, les développeurs ont souvent recours à de longues vérifications si nulles, ajoutant une complexité inutile et une duplication de code.

Approches alternatives

Bien qu'il n'y ait pas d'erreurs the-box utilitaire en Java pour gérer ce problème, il existe des alternatives élégantes :

Loi de violation de Demeter

Comme suggéré par @Erwin Bolwidt, vous pouvez briser la Loi de Déméter (LoD) et accédez directement aux propriétés imbriquées :

<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>
Copier après la connexion

Cette approche est déconseillée car elle viole le principe d'encapsulation et augmente la complexité du code.

Facultatif avec Java 8

Java 8 a introduit le type Facultatif, qui vous permet de gérer les valeurs nulles avec plus d'élégance. Vous pouvez envelopper chaque appel getter dans un facultatif :

<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>
Copier après la connexion

Cette approche élimine le besoin de vérifications nulles explicites et fournit une syntaxe plus concise et expressive.

Conclusion

Bien qu'il n'existe aucun utilitaire intégré pour vérifier les valeurs nulles dans les chaînes getter, le type facultatif et la violation de la loi de Demeter offrent des solutions flexibles et dépendantes du contexte. Le choix de la meilleure approche dépend du scénario spécifique et des principes de conception du projet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal