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:
- Il existe plus d'une convention.
- Les noms à plusieurs caractères sont cohérents avec d'autres styles Java, tels que le style de Google pour Java .
- Les noms lisibles sont (surprise!) Plus lisibles.
Lisibilité
Dans certaines interfaces que j'ai écrites, j'aimerais nommer le paramètre de type générique avec plus d'un caractère pour rendre le code plus lisible.
La lisibilité est bonne.
Comparer:
public final class EventProducer<L extends IEventListener<E>,E>
implements IEventProducer<L,E> {
à:
public final class EventProducer<LISTENER extends IEventListener<EVENT>,EVENT>
implements IEventProducer<LISTENER, EVENT> {
ou, avec la convention multi-caractères de Google:
public final class EventProducer<ListenerT extends IEventListener<EventT>,EventT>
implements IEventProducer<ListenerT, EventT> {
public final class EventProducer<ListenerT extends IEventListener<EventT>,EventT>
implements IEventProducer<ListenerT, EventT> {
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.
5.2.8 Saisir les noms de variables
Chaque variable de type est nommée dans l'un des deux styles suivants:
Une lettre majuscule unique, éventuellement suivie d'un chiffre unique (tels que E
, T
, X
, T2
)
Un nom sous la forme utilisée pour les classes (voir la section 5.2.2, noms de classes ), suivi de la lettre majuscule T (exemples: RequestT
, FooBarT
).
Problèmes
"Sans cette convention, il serait difficile de faire la différence entre une variable de type et un nom de classe ou d'interface ordinaire." - à partir des tutoriels Oracle, «Types génériques»
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.
Pourquoi ne pas simplement documenter la signification du paramètre de type dans le JavaDoc?
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.)
Les noms de paramètres de type à plusieurs caractères ne suivent pas la convention Oracle!
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.