Sí, puede usar nombres de varios caracteres para las variables de tipo, siempre que se distingan claramente de los nombres de clase.
Esto difiere de la convención sugerida por Sun con la introducción de genéricos en 2004. Sin embargo:
- Existe más de una convención.
- Los nombres de varios caracteres son consistentes con otros estilos de Java, como el estilo de Google para Java .
- Los nombres legibles son (¡sorpresa!) Más legibles.
Legibilidad
En algunas interfaces que escribí, me gustaría nombrar un parámetro de tipo genérico con más de un carácter para que el código sea más legible.
La legibilidad es buena.
Comparar:
public final class EventProducer<L extends IEventListener<E>,E>
implements IEventProducer<L,E> {
a:
public final class EventProducer<LISTENER extends IEventListener<EVENT>,EVENT>
implements IEventProducer<LISTENER, EVENT> {
o, con la convención de caracteres múltiples 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> {
Estilo de Google
La Guía de estilo de Java de Google permite nombres de una sola letra y nombres de clase de varios caracteres que terminan en T.
5.2.8 Escriba nombres de variables
Cada variable de tipo se nombra en uno de dos estilos:
Una letra mayúscula solo, seguido opcionalmente por un solo número (tales como E
, T
, X
, T2
)
Un nombre en la forma utilizada para las clases (ver Sección 5.2.2, nombres de clase ), seguido de la letra mayúscula (por ejemplo: RequestT
, FooBarT
).
Cuestiones
"Sin esta convención, sería difícil distinguir entre una variable de tipo y un nombre de clase o interfaz ordinario". - de los tutoriales de Oracle, "Tipos genéricos"
Los nombres de un solo carácter no son la única forma de distinguir los parámetros de tipo de los nombres de clase, como hemos visto anteriormente.
¿Por qué no simplemente documentar el significado del parámetro de tipo en JavaDoc?
Es cierto que los @param
elementos JavaDoc pueden proporcionar una descripción más larga. Pero también es cierto que los JavaDocs no son necesariamente visibles. (Por ejemplo, hay un asistente de contenido en Eclipse que muestra los nombres de los parámetros de tipo).
¡Los nombres de parámetros de tipo de caracteres múltiples no siguen la convención de Oracle!
Muchas de las convenciones originales de Sun se siguen casi universalmente en la programación Java.
Sin embargo, esta convención particular no lo es.
La mejor opción entre las convenciones en competencia es una cuestión de opinión. Las consecuencias de elegir una convención diferente a la de Oracle en este caso son menores. Usted y su equipo pueden elegir la convención que mejor satisfaga sus necesidades.