[JAVA] Point 68: Adhérer aux conventions de dénomination généralement acceptées

68. Respectez les conventions de dénomination

Convention de dénomination

Les conventions de dénomination Java sont bien organisées dans JLS 6.1. En gros, les conventions de dénomination peuvent être divisées en typographiques et grammaticales.

typographical

Nom du package, nom du module

Les noms de packages et de modules sont représentés hiérarchiquement par des composants séparés par des points. Les composants sont représentés par des lettres minuscules (et rarement des chiffres). Pour les packages utilisés en dehors de votre organisation, commencez par le nom de domaine Internet de votre organisation à l'envers (comme com.google). Cette règle est hors de portée pour les packages standard commençant par java et javax. Les utilisateurs ne doivent pas créer de packages ou de modules commençant par java ou javax. Les règles détaillées pour l'utilisation du nom de domaine Internet comme préfixe de package sont décrites dans JLS 6.1.

Le reste du nom du package se compose d'un ou plusieurs noms de composants. Il est généralement recommandé que les noms de composants soient des chaînes courtes de 8 caractères maximum (comme des abréviations).

Nom de classe, nom d'interface

Les noms de classe, y compris le type d'énumération et le type d'annotation, et les noms de nom d'interface se composent de mots dans lesquels la première lettre de chaque mot est en majuscule. À l'exception des acronymes et des abréviations courantes telles que max et min, l'utilisation d'abréviations doit être évitée. En ce qui concerne l'acronyme, il est controversé de l'écrire en majuscules ou de ne mettre en majuscule que la première lettre, mais du point de vue de la lisibilité, je voudrais recommander la méthode de mise en majuscule de la première lettre ici.

Nom de la méthode, nom du champ

Le nom de la méthode et le nom du champ sont fondamentalement les mêmes que les règles pour les noms de classe et les noms d'interface, sauf que le premier caractère est rendu plus bas. La seule exception à cette règle est que dans les champs constants, les mots majuscules doivent être séparés par un trait de soulignement. (NEGATIVE_INFINITY)

Variables locales

Les conventions de dénomination des variables locales sont similaires à celles des variables de champ, mais les variables locales sont autorisées à nommer des abréviations contextuelles (i, denom, houseNum, etc.). Les variables d'argument seront intégrées dans la documentation de la méthode, vous devez donc les nommer avec soin.

Paramètres de type

Les paramètres de type sont essentiellement composés d'un caractère. T est un type quelconque, E est le type d'élément de la collection, K et V sont les types clé et valeur de la carte, X est le type d'exception et R est le type de retour. De plus, lors de l'utilisation de plusieurs types arbitraires, l'ordre est T, U, V ou T1, T2, T3.

grammatical Les règles grammaticales de dénomination sont plus souples et controversées que les règles de notation.

Nom du package, nom du module

Il n'y a pas de convention de dénomination grammaticale pour les packages.

Nom de classe, nom d'interface

Les classes qui peuvent être instanciées, y compris les types d'énumération, sont nommées avec une nomenclature singulière, une nomenclature (Thread, PriorityQueue, ChessPiece, etc.). Les classes qui ne sont pas instanciées sont souvent nommées avec plusieurs formes de nomenclature (collectionneurs, collections, etc.). L'interface peut avoir la même convention de dénomination qu'une classe (Collection, Comparator, etc.) ou peut se terminer par une terminaison adjectif (Runnable, Iterable, Accessible, etc.). Le type d'annotation a diverses utilisations, il ne s'applique donc à aucun des éléments ci-dessus. La nomenclature, les verbes, les préfixes et les adjectifs sont tous couramment utilisés (BindingAnnotation, Inject, ImplementedBy, Singleton, etc.).

Nom de la méthode

Les méthodes qui exécutent certaines actions sont généralement nommées par des verbes, des phrases verbales (append, drawImage, etc.). Les méthodes qui renvoient boolean sont nommées en commençant par is ou has, suivies de mots qui agissent comme nomenclature, nomenclature ou adjectifs (tels que isDigit, isProbablePrime, isEmpty, isEnabled, hasSiblings). Les méthodes qui renvoient des valeurs autres que booléennes et les méthodes qui renvoient des attributs d'objet sont nommées avec la nomenclature, la nomenclature et les expressions verbales commençant par get. Certains disent que seules les phrases verbales commençant par get sont autorisées, mais les motifs sont rares. Il est généralement plus lisible d'utiliser des schémas de nomenclature et de nomenclature.

if (car.speed() > 2 * SPEED_LIMIT)
    generateAudibleAlert("Watch out for cops!");

Certaines conventions de dénomination des méthodes nécessitent une mention spéciale. La méthode qui convertit le type d'instance et le renvoie en tant qu'objet indépendant est parfois appelée méthode toType (toString, toArray, etc.). Une méthode qui renvoie un objet d'un type différent de celui de l'objet reçu est parfois appelée méthode asType (telle que asList). Une méthode qui renvoie une valeur primitive avec la même valeur que l'objet appelé est parfois appelée méthode typeValue (telle que intValue). Les noms courants des méthodes d'usine incluent from, of, valueOf, instance, getInstance, newInstance, getType, newType, etc. (Item1).

Nom de champ, variable locale

Les règles de grammaire pour les noms de champs sont moins importantes. C'est parce qu'une API bien conçue a peu de champs exposés. Comme pour le champ de type booléen, celui dans lequel seule la première chaîne de caractères de la méthode accesseur disparaît est souvent adopté (initialisé, composite, etc.). Dans d'autres domaines, il s'agit souvent d'un nom ou d'une nomenclature (hauteur, chiffres, bodyStyle). Les règles de syntaxe des variables locales sont beaucoup plus souples que les champs.

Recommended Posts

Point 68: Adhérer aux conventions de dénomination généralement acceptées
Élément 39: Préférez les annotations aux modèles de dénomination
Conventions de dénomination Java de base