Правила именования enum в Java: Singular или Plural?

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

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

Использование единственного числа (более общий подход):

Java
Скопировать код
public enum Цвет {
    КРАСНЫЙ, ЗЕЛЕНЫЙ, СИНИЙ; // Каждый цвет уникален
}

Использование множественного числа (для обозначения группы элементов):

Java
Скопировать код
public enum ДоступФайла {
    ЧТЕНИЕ, ЗАПИСЬ, УДАЛЕНИЕ; // Совокупность прав для выполнения CRUD операций
}
Кинга Идем в IT: пошаговый план для смены профессии

Когда использовать единственное число, а когда множественное?

Выбор между единственным и множественным числом зависит от контекста использования, в котором применяется перечисление. Название перечисления должно семантически соответствовать его составляющим. Учитывайте следующие принципы для определения подходящей формы:

Единственное число — для отдельных понятий:

Java
Скопировать код
enum День {
    ПОНЕДЕЛЬНИК, ВТОРНИК, СРЕДА; // Каждый день уникален по своему
}

Множественное число — для групповых понятий:

Java
Скопировать код
enum Разрешения {
    ЧТЕНИЕ, ЗАПИСЬ, ИСПОЛНЕНИЕ; // Группа прав доступа для защиты данных
}

Желательно, чтобы именование было понятным. В Java перечисления обычно используются для представления набора констант, таких как дни недели, цвета или направления.

Перечисления флагов: предпочтительно единственное число

Когда перечисления применяются для создания флагов (с использованием битовых операций), все равно рекомендуется использовать единственное число, чтобы сохранить последовательность:

Java
Скопировать код
public enum Разрешение {
    ЧТЕНИЕ(1), ЗАПИСЬ(2), ИСПОЛНЕНИЕ(4); // Единственные в своем роде, но служат многим
    private final int биты;

    Разрешение(int биты) {
        this.биты = биты;
    }

    public int ПолучитьБиты() {
        return биты;
    }
}

Несмотря на возможность комбинирования значений, в Java перечисления флагов могут быть эффективно представлены в памяти с помощью структур данных, таких как List или Set.

Использование перечислений внутри классов

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

Java
Скопировать код
public class Принтер {

    enum РежимРаботы {
        ЧЕРНО-БЕЛЫЙ, ЦВЕТНОЙ, ПОЛУТОНОВЫЙ; // Режимы печати, свойственные данному устройству
    }

    // ...
}

Заметьте, что РежимРаботы гармонично вписывается в класс Принтер, и использование множественного числа не требуется.

Визуализация

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

Markdown
Скопировать код
Единственное число (🍎): "Продаётся яблоко"
Множественное число (🍏🍏🍏): "Продаются яблоки"

В Java нейминг перечислений следует аналогичной логике:

Markdown
Скопировать код
| Применение              | Обозначение       |
| ----------------------  | ----------------- |
| Отдельная константа     | Единственное число|
| Набор элементов         | Множественное число |
Java
Скопировать код
enum Фрукт { ЯБЛОКО, БАНАН, ВИШНЯ } // Вариативность выбора: Множественное число
enum Направление { СЕВЕР } // Единственный вариант: Единственное число

Выбирайте название в соответствии с функциональным назначением. Один фрукт или ящик с фруктами — соответственно единственное или множественное число.

В уникальном доменном контексте...

В некоторых ситуациях термины предметной области олицетворяют множественность по сути. В таких случаях применяются доменные предпочтения:

Особые случаи:

Java
Скопировать код
enum Серии {
    ТРИЛОГИЯ, ДИЛОГИЯ, АНТОЛОГИЯ; // Трилогия, по своей природе, представляет комплект произведений
}

В таких конкретных контекстах более целесообразно придерживаться специфической терминологии предметной области, чтобы облегчить интуитивное использование API.

Полезные материалы

  1. Официальная спецификация языка Java от Oracle — Enum types — Основы объявления классов в Java, включая перечисления.
  2. Соглашения об именовании Oracle для Java — Нормы именования в Java, в частности идентификаторов.
  3. Обсуждение на StackOverflow – Правила именования enum в Java — Взгляд сообщества разработчиков на правильное именование перечислений.
  4. Стилевое руководство Java от Google — Соглашения об именах — Точка зрения Google на правила именования в Java, включая константы и перечисления.
  5. Java Practices — Enum types — Обзор типобезопасных перечислений и примеры их использования.
  6. GeeksforGeeks — Enumeration (enum) в Java — Материал от исходных понятий до продвинутого использования перечислений в Java для глубокого понимания этой тематики.