Tak, można używać nazw wieloznakowych dla zmiennych typu, o ile są one wyraźnie odróżniane od nazw klas.
Różni się to od konwencji sugerowanej przez Sun przy wprowadzeniu leków generycznych w 2004 roku. Jednak:
- Istnieje więcej niż jedna konwencja.
- Nazwy wieloznakowe są zgodne z innymi stylami Java, na przykład stylem Google dla języka Java .
- Czytelne nazwy są (niespodzianka!) Bardziej czytelne.
Czytelność
W niektórych interfejsach, które napisałem, chciałbym nazwać parametr typu generycznego więcej niż jednym znakiem, aby kod był bardziej czytelny.
Czytelność jest dobra.
Porównać:
public final class EventProducer<L extends IEventListener<E>,E>
implements IEventProducer<L,E> {
do:
public final class EventProducer<LISTENER extends IEventListener<EVENT>,EVENT>
implements IEventProducer<LISTENER, EVENT> {
lub zgodnie z konwencją wieloznakową 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> {
Styl Google
Przewodnik po stylach języka Java Google dopuszcza zarówno nazwy jednoliterowe, jak i wieloznakowe nazwy klasowe kończące się na T.
5.2.8 Wpisz nazwy zmiennych
Każda zmienna typu ma nazwę w jednym z dwóch stylów:
Pojedyncze litery, a następnie ewentualnie przez jeden cyfrze (na przykład E
, T
, X
, T2
)
Nazwa w formie stosowanej do klas (patrz punkt 5.2.2 Nazwy klas ), a następnie litery T (przykłady: RequestT
, FooBarT
).
Zagadnienia
„Bez tej konwencji trudno byłoby odróżnić zmienną typu od zwykłej nazwy klasy lub interfejsu”. - z samouczków Oracle, „Typy ogólne”
Nazwy jednoznakowe nie są jedynym sposobem odróżnienia parametrów typu od nazw klas, jak widzieliśmy powyżej.
Dlaczego nie udokumentować po prostu znaczenia parametru typu w JavaDoc?
Prawdą jest, że @param
elementy JavaDoc mogą zapewnić dłuższy opis. Ale prawdą jest również to, że JavaDocs niekoniecznie są widoczne. (Na przykład w Eclipse istnieje pomoc dotycząca treści, która wyświetla nazwy parametrów typu).
Nazwy parametrów typu wieloznakowego nie są zgodne z konwencją Oracle!
Wiele oryginalnych konwencji firmy Sun jest przestrzeganych prawie powszechnie w programowaniu w języku Java.
Jednak ta konkretna konwencja nie jest.
Najlepszy wybór spośród konkurencyjnych konwencji to kwestia opinii. Konsekwencje wyboru innej konwencji niż Oracle w tym przypadku są niewielkie. Ty i Twój zespół możecie wybrać konwencję, która najlepiej odpowiada Twoim potrzebom.