Dans certaines interfaces que j'ai écrites, j'aimerais nommer les paramètres de type générique avec plus d'un caractère pour rendre le code plus lisible.
Quelque chose comme....
Map<Key,Value>
Au lieu de cela...
Map<K,V>
Mais en ce qui concerne les méthodes, les paramètres de type ressemblent à des classes java, ce qui est également déroutant.
public void put(Key key, Value value)
Cela semble que la clé et la valeur sont des classes. J'ai trouvé ou pensé à quelques notations, mais rien de tel qu'une convention de Sun ou une meilleure pratique générale.
Alternatives que j'ai devinées ou trouvées ...
Map<KEY,VALUE>
Map<TKey,TValue>
java
generics
naming-conventions
chaper29
la source
la source
Réponses:
Oracle recommande ce qui suit dans Tutoriels Java> Génériques> Types génériques :
Je m'y tenir pour éviter la confusion entre les développeurs et les éventuels responsables.
la source
R
pour le résultat etA
pour l'accumulateur.Element
inList<Element>
est un type paramétré ou une classe?BiFunction<T, U, R>
cette convention. Si c'était le cas, ce serait le casBiFunction<T, S, R>
.Ajouter
Type
Une bonne discussion peut être trouvée dans les commentaires sur la page DZone, Conventions de dénomination pour les types paramétrés .
Voir le commentaire d'Erwin Mueller. Sa suggestion me paraît parfaitement logique: ajoutez le mot
Type
.Appelez une pomme une pomme, une voiture une voiture. Le nom en question est le nom d'un type de données, non? (En POO , une classe définit essentiellement un nouveau type de données.) Appelez-le donc un «Type».
Exemple de Mueller, tiré de l'article de l'article original:
Ajouter
T
Une question en double fournit cette réponse par Andy Thomas. Notez l'extrait du guide de style de Google qui suggère qu'un nom de type à plusieurs caractères doit se terminer par une seule majuscule
T
.la source
La raison pour laquelle la convention de dénomination officielle recommande l'utilisation d'une seule lettre est la suivante:
Je pense qu'avec les IDE modernes, cette raison n'est plus valable, par exemple. IntelliJ Idea affiche des paramètres de type générique avec des couleurs différentes de celles des classes régulières.
Code de type générique tel qu'affiché dans IntelliJ Idea 2016.1
En raison de cette distinction, j'utilise des noms descriptifs plus longs pour mes types génériques, avec la même convention que les types réguliers. J'évite d'ajouter des préfixes et des suffixes tels que T ou Type car je les considère comme du bruit inutile et ne sont plus nécessaires pour distinguer visuellement les types génériques.
Remarque: comme je ne suis pas un utilisateur d'Eclipse ou de Netbeans, je ne sais pas s'ils offrent une fonctionnalité similaire.
la source
Oui, vous pouvez utiliser des noms à plusieurs caractères pour les variables de type, à condition qu'ils se distinguent clairement des noms de classe.
Cela diffère de la convention suggérée par Sun avec l'introduction des génériques en 2004. Cependant:
Lisibilité
La lisibilité est bonne.
Comparer:
à:
ou, avec la convention multi-caractères de Google:
Style Google
Le guide de style Google Java autorise à la fois les noms à une seule lettre et les noms de classe à plusieurs caractères se terminant par T.
Problèmes
Les noms à caractère unique ne sont pas le seul moyen de distinguer les paramètres de type des noms de classe, comme nous l'avons vu ci-dessus.
Il est vrai que les
@param
éléments JavaDoc peuvent fournir une description plus longue. Mais il est également vrai que les JavaDocs ne sont pas forcément visibles. (Par exemple, il existe une assistance de contenu dans Eclipse qui affiche les noms des paramètres de type.)De nombreuses conventions originales de Sun sont suivies presque universellement dans la programmation Java.
Cependant, cette convention particulière ne l'est pas.
Le meilleur choix parmi les conventions concurrentes est une question d’opinion. Les conséquences du choix d'une convention autre que celle d'Oracle dans ce cas sont mineures. Vous et votre équipe pouvez choisir la convention qui répond le mieux à vos besoins.
la source
Vous pouvez utiliser javadoc pour au moins donner un indice aux utilisateurs de votre classe générique. Je n'aime toujours pas ça (je suis d'accord avec @ chaper29) mais la documentation m'aide.
par exemple,
L'autre chose que j'ai connue est d'utiliser mon IDE pour refactoriser une classe qui enfreint la convention. Travaillez ensuite sur le code et remodelez-le en lettres simples. Cela me facilite de toute façon si de nombreux paramètres de type sont utilisés.
la source