Sì, puoi usare nomi multi-carattere per variabili di tipo, purché siano chiaramente distinti dai nomi di classe.
Ciò differisce dalla convenzione suggerita da Sun con l'introduzione dei generici nel 2004. Tuttavia:
- Esiste più di una convenzione.
- I nomi composti da più caratteri sono coerenti con altri stili Java, come lo stile di Google per Java .
- I nomi leggibili sono (sorpresa!) Più leggibili.
leggibilità
In alcune interfacce che ho scritto vorrei nominare un parametro di tipo generico con più di un carattere per rendere il codice più leggibile.
La leggibilità è buona.
Confrontare:
public final class EventProducer<L extends IEventListener<E>,E>
implements IEventProducer<L,E> {
per:
public final class EventProducer<LISTENER extends IEventListener<EVENT>,EVENT>
implements IEventProducer<LISTENER, EVENT> {
oppure, con la convenzione multi-carattere di 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> {
Stile Google
La Guida allo stile di Google Java consente sia nomi di una sola lettera che nomi di classe multi-carattere che terminano con T.
5.2.8 Digitare i nomi delle variabili
Ogni variabile di tipo è denominata in uno dei due stili:
Una singola lettera maiuscola, eventualmente seguito da un singolo numero di riferimento (ad esempio E
, T
, X
, T2
)
Un nome nella forma utilizzata per le classi (vedere Sezione 5.2.2, nomi di classe ), seguito dalla lettera maiuscola T (esempi: RequestT
, FooBarT
).
Problemi
"Senza questa convenzione, sarebbe difficile distinguere tra una variabile di tipo e un nome di classe o interfaccia ordinario." - dai tutorial Oracle, "Tipi generici"
I nomi a carattere singolo non sono l'unico modo per distinguere i parametri di tipo dai nomi di classe, come abbiamo visto sopra.
Perché non documentare semplicemente il significato del parametro di tipo in JavaDoc?
È vero che gli @param
elementi JavaDoc possono fornire una descrizione più lunga. Ma è anche vero che i JavaDoc non sono necessariamente visibili. (Ad esempio, c'è un'assistenza ai contenuti in Eclipse che mostra i nomi dei parametri di tipo.)
I nomi dei parametri di tipo multi-carattere non seguono la convenzione Oracle!
Molte delle convenzioni originali di Sun sono seguite quasi universalmente nella programmazione Java.
Tuttavia, questa particolare convenzione non lo è.
La scelta migliore tra le convenzioni concorrenti è una questione di opinione. Le conseguenze della scelta di una convenzione diversa da quella di Oracle in questo caso sono minori. Tu e il tuo team potete scegliere la convenzione che meglio soddisfa le vostre esigenze.