Public в интерфейсах Java: советы по коду и стандарты

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

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

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

Методы в интерфейсе Java по умолчанию являются публичными. Указывать public в них не обязательно, это излишне. Для специальных типов методов, таких как default или static, явные модификаторы необходимы. Взглянем на пример:

Java
Скопировать код
interface MyInterface {
    void myMethod(); // 'public' не требуется упоминать, это и так подразумевается
    default void defaultMethod() {} // 'default' должно быть указано обязательно – это закон природы!
}

<b>Итак:</b> Общепринято опускать public при объявлении методов интерфейса, так как это их естественная видимость.

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

Указывать 'public' или нет: мнение Спецификации языка Java?

Спецификация языка Java (JLS) рекомендует стремиться к максимальной лаконичности кода. Методы интерфейса без указания public функционируют без сбоев, поэтому это ключевое слово считается избыточным. Упрощение кода помогает сосредоточить внимание на его логике.

Java
Скопировать код
interface Simplified {
    void clearMethod(); // 'public' здесь излишне, все и так ясно
}

Согласованность как суть порядка в коде

Согласованность – это залог читаемости и психологического комфорта во время работы с кодом. Когда-то интерфейсы, вроде Comparable и Collection, следовали различным правилам стиля. Теперь же предпочтительно поддерживать единообразие для прощади чтения и согласованности стиля, делая код выглядящим более цельным и организованным.

Интерфейсы Java: эволюция и развитие

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

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

Объявления методов в интерфейсе Java простой и ясной аналогией:

Markdown
Скопировать код
Если бы интерфейс Java был музеем (🏛️):

| Зал  | Выставка         |
| ---- | ---------------- |
| 1    | Общедоступный (🔓)   |
| 2    | Открыт ли доступ? (❓🔓)|
| 3    | Доступ открыт! (✅🔓)|
Java
Скопировать код
interface MuseumManifest {
    void viewArt();  // Бесплатный вход (✅🔓), табличка 'public' не требуется!
}

Главное, что надо понимать: Все экспонаты в музее (методы в интерфейсе) доступны для публики (public); плакаты "Открытый доступ" (модификатор public) висеть не должны. 🏛️🔓

Смирение с интерфейсами без 'public'

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

Модификатор public: избыточность или необходимость?

Перегрузка интерфейса необоснованными модификаторами приводит к его усложнению и создает ложное представление о некоторой необходимости, или еще хуже, о возможности методов, не открытых публица, что противоположно основам семантики Java.

Принятие и придерживание четких правил

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

Баланс использования 'public'

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

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

  1. Описание интерфейса — учебные материалы по JavaОфициальная позиция Oracle по определению интерфейса.
  2. Руководство по стилю Java от GoogleПодход Google к стандартам форматирования кода на Java.
  3. Effective Java, 3rd EditionМнения Джошуа Блоха об оформлении интерфейсов.
  4. Статические методы в интерфейсах Java 8 — DZone — Рассуждения о методах default интерфейсов в эпоху Java 8.
  5. Изменения интерфейсов в Java 8 — статья на Medium от Джавина Пола — О прогрессе и нововведениях в интерфейсах Java 8.