Да, вы можете использовать многосимвольные имена для переменных типа, если они четко отличаются от имен классов.
Это отличается от соглашения, предложенного Sun с введением дженериков в 2004 году. Однако:
- Существует более одного соглашения.
- Многосимвольные имена соответствуют другим стилям Java, таким как стиль Google для Java. .
- Читаемые имена (сюрприз!) Более читабельны.
читабельность
В некоторых интерфейсах, которые я написал, я хотел бы назвать параметр универсального типа более чем одним символом, чтобы сделать код более читабельным.
Читаемость хорошая.
Для сравнения:
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> {
или, согласно многосимвольному соглашению 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> {
Стиль Google
Руководство по стилю Google Java допускает как однобуквенные, так и многосимвольные имена класса, заканчивающиеся на T.
5.2.8 Имена переменных типа
Каждой переменной типа присвоено имя в одном из двух стилей:
Одна буква, необязательно с последующим одной цифрой (например E
, T
, X
, T2
)
Имя в форме , используемой для классов (смотрите Раздел 5.2.2, имена классов ), а затем буквы Т (примеры: RequestT
, FooBarT
).
вопросы
«Без этого соглашения было бы трудно отличить переменную типа от обычного класса или имени интерфейса». - из руководств Oracle «Универсальные типы»
Односимвольные имена - не единственный способ отличить параметры типа от имен классов, как мы видели выше.
Почему бы просто не задокументировать значение параметра типа в JavaDoc?
Верно, что @param
элементы JavaDoc могут содержать более подробное описание. Но также верно и то, что JavaDocs не обязательно видимы. (Например, в Eclipse есть помощник по содержанию, который показывает имена параметров типа.)
Имена параметров многосимвольного типа не соответствуют соглашению Oracle!
Многие оригинальные соглашения Sun почти повсеместно соблюдаются в программировании на Java.
Однако этого конкретного соглашения нет.
Лучший выбор среди конкурирующих конвенций - это вопрос личного мнения. Последствия выбора соглашения, отличного от Oracle, в этом случае незначительны. Вы и ваша команда можете выбрать соглашение, которое наилучшим образом соответствует вашим потребностям.