Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

Правильное именование getter и setter для boolean в Java

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

Применяйте префикс 'is' для геттеров булевых полей в Java:

Java
Скопировать код
private boolean active;
public boolean isActive() {  // Префикс 'is' следует общей конвенции!
    return active;
}
// И для сеттера сохраняйте стандарты
public void setActive(boolean active) { // Чётко и понятно!
    this.active = active;
}

Если применение is кажется неподходящим, рассмотрите альтернативные варианты — has, can, should:

Java
Скопировать код
private boolean hasAccount;   
public boolean hasAccount() { // Полностью соответствует смыслу
    return hasAccount;
}
public void setHasAccount(boolean hasAccount) { // Логично и понятно
    this.hasAccount = hasAccount;
}

Ясность коммуникации важнее строгих правил.

Кинга Идем в IT: пошаговый план для смены профессии

Анализ контекста: Как выбрать префикс?

Применение 'is', 'has', 'can', 'should'

Префикс зависит от значения булевого поля. Рассмотрим примеры:

  • Существование или владение: Если имеется поле hasLicense, то public boolean hasLicense() будет уместно.
  • Способность: Для поля canDoTask идеально подходит public boolean canDoTask().
  • Рекомендация: Поле shouldContinue обозначает целесообразность, поэтому public boolean shouldContinue() великолепно подходит.

Грамотный выбор префикса повышает понимание кода и улучшает его читаемость.

Как усовершенствовать именование полей и методов

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Избегайте злоупотребления 'is'

Не подойдёт isIsAvailable() для поля isAvailable, не так ли?

Java
Скопировать код
// Выглядит нелепо
private boolean isAvailable;
public boolean isIsAvailable() { // Не самый лучший вариант
    return isAvailable;
}

Лучше назвать поле available и метод isAvailable().

Распространённые ошибки и способы избежать их

Избегайте абстрактных имен

Применяйте конкретные названия вместо путаницы, как status или flag. Вместо isStatus лучше isOrderConfirmed.

Учёт различий между классами-обёртками и примитивами

При работе с Boolean и boolean, учтите различия:

Java
Скопировать код
private Boolean isActive; // Объектный тип Boolean
public Boolean getActive() { // Для класса-обёртки используется 'get'
    return isActive;
}

private boolean active; // Примитивный тип
public boolean isActive() { // Для примитивного типа подходит 'is'
    return active;
}

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

В Java булевые поля функционируют как выключатели в доме:

ДействиеМетод
💡 Проверить светisLightOn()
🔛 Включить светsetLightOn()
🔚 Выключить светsetLightOff()
  • is — это индикатор необходимости в свете.
  • setрегулятор света.

🏡 До: isLightOn() -> 💡Нет, 🏡 После: setLightOn(true) -> 💡Теперь светло!

'Функциональная' сторона программирования: Дополнительные советы

Согласованность важна при работе в команде

Важно согласовать правила именования методов в команде. Это сократит путаницу и освободит время для перерывов!

Для авторов библиотек: Четкость — ключ к успеху

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

Тестируйте геттеры, чтобы избежать ошибок

Геттеры для булевых полей активно используются в модульных тестах. Чем понятнее имена методов, тем проще тестировать их.

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

  1. JavaBeans Specification — документация по шаблонам JavaBeans.
  2. java – Каковы правила именования геттеров и сеттеров для булевых полей? – Stack Overflow — советы по именованию геттеров и сеттеров.
  3. Соглашение о кодировании на Java: 9. Правила именования — официальные соглашения по именованию в Java.
  4. Google Java Style Guide — руководство по стилю кодирования от Google.
  5. BeanUtils – Commons — инструменты для работы с JavaBeans.
  6. IBM Developer — о важности соблюдения норм именования для командной работы.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой префикс следует использовать для геттеров булевых полей в Java?
1 / 5