0%
Les enregistrements : des classes de données sans code généré

Les enregistrements

Remplacer cent lignes générées par une déclaration d'une ligne, et savoir quand s'en abstenir.

10-15 min

Les enregistrements : des classes de données sans code généré

Ouvrez n'importe quel projet Java 8 et cherchez une classe Point, Adresse ou LigneCommande. Vous trouverez trois champs utiles noyés dans cent vingt lignes que personne n'a écrites à la main : un constructeur, six accesseurs, un equals généré par l'IDE, un hashCode assorti, un toString. Ce code n'exprime rien. Il est pourtant versionné, relu en revue de code, et surtout il ment dès qu'on ajoute un quatrième champ sans régénérer equals. Le bogue qui en résulte — deux objets identiques que la HashMap traite comme différents — est parmi les plus longs à diagnostiquer, parce que le code fautif a l'air correct.

Un enregistrement supprime ce risque en supprimant le code. Vous déclarez la liste des composants ; le compilateur produit le reste, et le régénère automatiquement le jour où vous ajoutez un champ. Ce n'est pas seulement une économie de frappe : c'est une déclaration d'intention. Un enregistrement dit à qui lit le code que cet objet est une donnée transparente et immuable, entièrement définie par ses composants, et non un objet à comportement dont l'identité compte.

Commentaires

Les commentaires sont alimentés par GitHub Discussions

Connectez-vous avec GitHub pour participer à la discussion

Lien copié !