Кодирование конвенций - именование перечислений

Существует ли конвенция для именования перечислений в Java?

Мое предпочтение - то, что перечисление является типом. Так, например, у Вас есть перечисление

Fruit{Apple,Orange,Banana,Pear, ... }

NetworkConnectionType{LAN,Data_3g,Data_4g, ... }

Я настроен против именования его:

FruitEnum
NetworkConnectionTypeEnum

Я понимаю, что легко собрать, какие файлы являются перечислениями, но затем Вы также имели бы:

NetworkConnectionClass
FruitClass

Кроме того, есть ли хороший документ, описывающий то же для констант, где объявить их и т.д.?

278
задан 5 revs, 5 users 71%Walter White 16 October 2015 в 15:17
поделиться

3 ответа

Перечисления являются классами и должны следовать соглашениям для классов. Экземпляры перечислений являются константами и должны следовать соглашениям для констант. Поэтому

enum Fruit {APPLE, ORANGE, BANANA, PEAR};

Нет никаких причин для написания FruitEnum больше, чем FruitClass. Вы просто тратите четыре (или пять) символов, которые не добавляют никакой информации.

Сама Java рекомендует такой подход, и он используется в их примерах.

451
ответ дан 23 November 2019 в 02:04
поделиться

Это все еще типы, поэтому я всегда использую те же соглашения об именах, что и для классов.

Я бы определенно не одобрил использование "Class" или "Enum" в имени. Если у вас есть и FruitClass , и FruitEnum , то что-то еще не так и вам нужны более описательные имена. Я пытаюсь подумать о том, какой код потребовал бы того и другого, и мне кажется, что должен быть базовый класс Fruit с подтипами вместо перечисления. (Это всего лишь мое предположение, у вас может быть иная ситуация, чем то, что я себе представляю.)

Лучшая справочная информация, которую я могу найти для именования констант, взята из учебника Переменные :

Если выбранное вами имя состоит только из одного слова, пишите это слово строчными буквами. Если он состоит из более чем одного слова, делайте первую букву каждого последующего слова заглавной. Имена gearRatio и currentGear являются яркими примерами этого соглашения. Если ваша переменная хранит постоянное значение, такое как static final int NUM_GEARS = 6, соглашение немного изменится, каждая буква будет заглавной, а последующие слова отделяются символом подчеркивания. По соглашению, символ подчеркивания нигде больше не используется.

7
ответ дан 23 November 2019 в 02:04
поделиться

В нашей кодовой базе; мы обычно объявляем перечисления в классе, к которому они принадлежат.

Итак, для вашего примера Fruit, у нас будет класс Fruit, а внутри него Enum под названием Fruits.

Ссылка на него в коде выглядит так: Fruit.Fruits.Apple, Fruit.Fruits.Pear и т. Д.

Константы следуют в той же строке, где они либо определяются в классе к которым они относятся (например, Fruit.ORANGE_BUSHEL_SIZE ); или если они применяются в масштабе всей системы (т.е. эквивалентное «нулевое значение» для целых чисел) в классе с именем «ConstantManager» (или эквивалентном; например, ConstantManager.NULL_INT ). (примечание: все наши константы в верхнем регистре)

Как всегда, ваши стандарты кодирования, вероятно, отличаются от моих; так YMMV.

13
ответ дан 23 November 2019 в 02:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: