Sun (et maintenant Oracle) a maintenu un document intitulé Conventions de code pour le langage de programmation Java . La dernière mise à jour a eu lieu en 1999, mais l'essence de la ligne de guide de style persiste.
Le chapitre 9 couvre les conventions de dénomination.
Pour un type d'identifiant de «constantes»:
Les noms des variables déclarées constantes de classe et des constantes ANSI doivent être tous en majuscules avec des mots séparés par des traits de soulignement ("_"). (Les constantes ANSI doivent être évitées, pour faciliter le débogage.)
Les exemples donnés:
static final int MIN_WIDTH = 4;
static final int MAX_WIDTH = 999;
static final int GET_THE_CPU = 1;
Dans un document plus récent - son glissé là-dedans. From Variables (Les tutoriels Java> Apprendre le langage Java> Bases du langage :
Si le nom que vous choisissez se compose d'un seul mot, épelez ce mot dans toutes les lettres minuscules. S'il se compose de plusieurs mots, mettez en majuscule la première lettre de chaque mot suivant. Les noms gearRatio
et currentGear
les exemples principaux de cette convention. Si votre variable stocke une valeur constante, telle que static final int NUM_GEARS = 6
, la convention change légèrement, mettant en majuscule chaque lettre et séparant les mots suivants par le caractère de soulignement. Par convention, le caractère de soulignement n'est jamais utilisé ailleurs.
De nombreux analyseurs statiques pour Java cherchent à appliquer cela. Par exemple, le style de contrôle applique:
Vérifie que les noms constants sont conformes à un format spécifié par la propriété format. Une constante est un champ statique et final ou un champ d'interface / d'annotation, sauf serialVersionUID
et serialPersistentFields
. Le format est une expression régulière par défaut ^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$
.
Cela se résume vraiment aux conventions de la communauté écrivant le code ... et idéalement le gardant le même.
Les exemples ci-dessus sont donnés comme static final
ceux qui sont probablement dérivés des conventions C pour #define
- qui, comme C, sont remplacées dans le code lors de la compilation plutôt qu'à l'exécution.
La question qui devrait alors être posée est "est-ce que cela se comporte comme une constante? Ou est-ce comme un champ à écriture unique?" - puis suivre les conventions en conséquence. Le test décisif pour une telle question serait "Si vous étalonniez l'objet, incluriez-vous le champ final?" Si la réponse est qu'il s'agit d'une constante, traitez-la comme telle (et ne la sérialisez pas). D'un autre côté, si cela fait partie de l'état de l'objet qui devrait être sérialisé, alors ce n'est pas une constante.
Quoi qu'il en soit, il est important de s'en tenir au style de code, qu'il soit juste ou faux. Les problèmes les plus graves surgissent de conventions incohérentes dans un projet plutôt que simplement quelque chose qui choque l'œil. Envisagez d'obtenir des outils d'analyse statique et de les configurer pour maintenir la cohérence.