Maison  >  Article  >  Java  >  Interfaces avec champs statiques : sont-elles une odeur de code ?

Interfaces avec champs statiques : sont-elles une odeur de code ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-31 09:17:01607parcourir

 Interfaces with Static Fields: Are They a Code Smell?

Interfaces avec des champs statiques : un piège pour les imprudents

Les développeurs Java rencontrent souvent des interfaces avec de nombreux champs statiques utilisés comme « constantes ». Bien que cette technique puisse sembler pratique, elle est généralement considérée comme une mauvaise pratique.

Le principal problème de cette approche est la prolifération de constantes dans tout le code. Les classes d'implémentation intègrent tous les champs statiques à leur interface publique, même s'ils ne sont utilisés qu'en interne. Par exemple, l'interface SwingConstants est implémentée par de nombreuses classes, exposant sans discernement sa longue liste de constantes à tous.

L'architecte logiciel Josh Bloch met également en garde contre ce modèle :

"La mise en œuvre d'une interface constante provoque [détails d'implémentation] pour s'infiltrer dans l'API exportée de la classe", déclare-t-il. "Cela représente un engagement : si dans une version future la classe est modifiée pour qu'elle n'ait plus besoin d'utiliser les constantes, elle doit quand même implémenter l'interface pour garantir la compatibilité binaire."

Les alternatives à ce modèle incluent l'utilisation énumérations ou définition de constantes en tant que champs statiques publics dans une classe non instanciable. Ces méthodes permettent à d'autres classes d'accéder aux constantes sans encombrer leur propre API ni violer le principe d'encapsulation.

En conclusion, même si les interfaces avec des champs statiques peuvent sembler offrir une certaine utilité, elles introduisent une complexité inutile et des problèmes de maintenance potentiels. Lorsque vous travaillez avec des constantes, envisagez d'utiliser des énumérations ou des classes non instanciables comme options plus appropriées et maintenables.

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!

Déclaration:
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