Public в интерфейсах Java: советы по коду и стандарты
Быстрый ответ
Методы в интерфейсе Java по умолчанию являются публичными. Указывать public
в них не обязательно, это излишне. Для специальных типов методов, таких как default
или static
, явные модификаторы необходимы. Взглянем на пример:
interface MyInterface {
void myMethod(); // 'public' не требуется упоминать, это и так подразумевается
default void defaultMethod() {} // 'default' должно быть указано обязательно – это закон природы!
}
<b>Итак:</b> Общепринято опускать public
при объявлении методов интерфейса, так как это их естественная видимость.
Указывать 'public' или нет: мнение Спецификации языка Java?
Спецификация языка Java (JLS) рекомендует стремиться к максимальной лаконичности кода. Методы интерфейса без указания public
функционируют без сбоев, поэтому это ключевое слово считается избыточным. Упрощение кода помогает сосредоточить внимание на его логике.
interface Simplified {
void clearMethod(); // 'public' здесь излишне, все и так ясно
}
Согласованность как суть порядка в коде
Согласованность – это залог читаемости и психологического комфорта во время работы с кодом. Когда-то интерфейсы, вроде Comparable
и Collection
, следовали различным правилам стиля. Теперь же предпочтительно поддерживать единообразие для прощади чтения и согласованности стиля, делая код выглядящим более цельным и организованным.
Интерфейсы Java: эволюция и развитие
Появление в Java 8 новых возможностей добавления default
и static
методов в интерфейсы исключает однозначный ответ о необходимости явных модификаторов для специфических методов. Важно понимать, когда их стоит добавить для ясности и функциональности.
Визуализация
Объявления методов в интерфейсе Java простой и ясной аналогией:
Если бы интерфейс Java был музеем (🏛️):
| Зал | Выставка |
| ---- | ---------------- |
| 1 | Общедоступный (🔓) |
| 2 | Открыт ли доступ? (❓🔓)|
| 3 | Доступ открыт! (✅🔓)|
interface MuseumManifest {
void viewArt(); // Бесплатный вход (✅🔓), табличка 'public' не требуется!
}
Главное, что надо понимать: Все экспонаты в музее (методы в интерфейсе) доступны для публики (public); плакаты "Открытый доступ" (модификатор public) висеть не должны. 🏛️🔓
Смирение с интерфейсами без 'public'
Отказ от указания public
может быть непривычным, как отказ от любимого вредного лакомства. Однако, отсутствие лишнего служебного слова в интерфейсах соответствует современным трендам кодирования.
Модификатор public: избыточность или необходимость?
Перегрузка интерфейса необоснованными модификаторами приводит к его усложнению и создает ложное представление о некоторой необходимости, или еще хуже, о возможности методов, не открытых публица, что противоположно основам семантики Java.
Принятие и придерживание четких правил
Даже стандартные библиотеки Java могут содержать несоответствия, вызывающие путаницу. Однако они не становятся параметрами качества написания кода. Выбирайте простой и ясный способ определения методов интерфейса с фокусом на поддерживаемости и читаемости кода.
Баланс использования 'public'
Принимая решение о включении public
, взвесите возможные преимущества и недостатки. Примите во внимане размер проекта, профессиональный уровень команды и эстаблированные стандарты. В конечном итоге интерфейс должен быть настолько ясным и понятным, как детская книга.
Полезные материалы
- Описание интерфейса — учебные материалы по Java — Официальная позиция Oracle по определению интерфейса.
- Руководство по стилю Java от Google — Подход Google к стандартам форматирования кода на Java.
- Effective Java, 3rd Edition — Мнения Джошуа Блоха об оформлении интерфейсов.
- Статические методы в интерфейсах Java 8 — DZone — Рассуждения о методах
default
интерфейсов в эпоху Java 8. - Изменения интерфейсов в Java 8 — статья на Medium от Джавина Пола — О прогрессе и нововведениях в интерфейсах Java 8.