Правила именования enum в Java: Singular или Plural?
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
В именах перечислений в Java, как правило, используется единственное число. Применение единственного числа обуславливается тем, что каждый элемент перечисления воспринимается как отдельное понятие. В то время как множественное число стоит выбрать в тех случаях, когда элементы перечисления составляют определенную группу, например, набор прав доступа. Это придает большую ясность их интерпретации в контексте.
Использование единственного числа (более общий подход):
public enum Цвет {
КРАСНЫЙ, ЗЕЛЕНЫЙ, СИНИЙ; // Каждый цвет уникален
}
Использование множественного числа (для обозначения группы элементов):
public enum ДоступФайла {
ЧТЕНИЕ, ЗАПИСЬ, УДАЛЕНИЕ; // Совокупность прав для выполнения CRUD операций
}
Когда использовать единственное число, а когда множественное?
Выбор между единственным и множественным числом зависит от контекста использования, в котором применяется перечисление. Название перечисления должно семантически соответствовать его составляющим. Учитывайте следующие принципы для определения подходящей формы:
Единственное число — для отдельных понятий:
enum День {
ПОНЕДЕЛЬНИК, ВТОРНИК, СРЕДА; // Каждый день уникален по своему
}
Множественное число — для групповых понятий:
enum Разрешения {
ЧТЕНИЕ, ЗАПИСЬ, ИСПОЛНЕНИЕ; // Группа прав доступа для защиты данных
}
Желательно, чтобы именование было понятным. В Java перечисления обычно используются для представления набора констант, таких как дни недели, цвета или направления.
Перечисления флагов: предпочтительно единственное число
Когда перечисления применяются для создания флагов (с использованием битовых операций), все равно рекомендуется использовать единственное число, чтобы сохранить последовательность:
public enum Разрешение {
ЧТЕНИЕ(1), ЗАПИСЬ(2), ИСПОЛНЕНИЕ(4); // Единственные в своем роде, но служат многим
private final int биты;
Разрешение(int биты) {
this.биты = биты;
}
public int ПолучитьБиты() {
return биты;
}
}
Несмотря на возможность комбинирования значений, в Java перечисления флагов могут быть эффективно представлены в памяти с помощью структур данных, таких как List или Set.
Использование перечислений внутри классов
Перечисления, инкапсулированные в классы или интерфейсы, подчиняются тем же правилам именования. Эти перечисления отражают категории, связанные с родительским типом:
public class Принтер {
enum РежимРаботы {
ЧЕРНО-БЕЛЫЙ, ЦВЕТНОЙ, ПОЛУТОНОВЫЙ; // Режимы печати, свойственные данному устройству
}
// ...
}
Заметьте, что РежимРаботы гармонично вписывается в класс Принтер, и использование множественного числа не требуется.
Визуализация
Представьте себе фруктовую лавку, где вывешены таблички с ценами на товар:
Единственное число (🍎): "Продаётся яблоко"
Множественное число (🍏🍏🍏): "Продаются яблоки"
В Java нейминг перечислений следует аналогичной логике:
| Применение | Обозначение |
| ---------------------- | ----------------- |
| Отдельная константа | Единственное число|
| Набор элементов | Множественное число |
enum Фрукт { ЯБЛОКО, БАНАН, ВИШНЯ } // Вариативность выбора: Множественное число
enum Направление { СЕВЕР } // Единственный вариант: Единственное число
Выбирайте название в соответствии с функциональным назначением. Один фрукт или ящик с фруктами — соответственно единственное или множественное число.
В уникальном доменном контексте...
В некоторых ситуациях термины предметной области олицетворяют множественность по сути. В таких случаях применяются доменные предпочтения:
Особые случаи:
enum Серии {
ТРИЛОГИЯ, ДИЛОГИЯ, АНТОЛОГИЯ; // Трилогия, по своей природе, представляет комплект произведений
}
В таких конкретных контекстах более целесообразно придерживаться специфической терминологии предметной области, чтобы облегчить интуитивное использование API.
Полезные материалы
- Официальная спецификация языка Java от Oracle — Enum types — Основы объявления классов в Java, включая перечисления.
- Соглашения об именовании Oracle для Java — Нормы именования в Java, в частности идентификаторов.
- Обсуждение на StackOverflow – Правила именования enum в Java — Взгляд сообщества разработчиков на правильное именование перечислений.
- Стилевое руководство Java от Google — Соглашения об именах — Точка зрения Google на правила именования в Java, включая константы и перечисления.
- Java Practices — Enum types — Обзор типобезопасных перечислений и примеры их использования.
- GeeksforGeeks — Enumeration (enum) в Java — Материал от исходных понятий до продвинутого использования перечислений в Java для глубокого понимания этой тематики.