" Шаблон постоянного интерфейса плохо использует интерфейсы "
Кто бы ни придумал эту гипотезу, какой бы гуру он ни был, он придумал ее на основе необходимости продолжать эффективно внедрять вредные привычки и практики. Гипотеза основана на продвижении обоснованности вредных привычек проектирования программного обеспечения.
Я написал ответное опровержение этой гипотезы здесь: Каков наилучший способ реализации констант в Java? , объясняющий необоснованность этой гипотезы.
В течение 10 лет этот вопрос оставался открытым, пока он не был закрыт в течение 2 часов после того, как я опубликовал свои доводы, оправдывающие эту гипотезу, тем самым разоблачая нежелание обсуждать тех, кто придерживается этой ошибочной гипотезы.
Это то, что я высказал против гипотезы
Основой для сохранения этой гипотезы является необходимость в методах и ОГРАНИЧИТЕЛЬНЫХ правилах, чтобы справиться с последствиями вредных программных привычек и методологий.
Сторонники настроения " Шаблон интерфейса с постоянным интерфейсом - плохое использование интерфейсов" не в состоянии представить какие-либо причины, кроме причин, вызванных необходимостью справиться с последствиями этих плохих привычки и практики.
Решить фундаментальную проблему.
И тогда почему бы не использовать в полной мере и не использовать все языковые возможности структуры языка Java для собственного удобства. Куртки не требуются. Зачем придумывать правила, чтобы забаррикадировать ваш неэффективный образ жизни, чтобы различать и обвинять в более эффективном образе жизни?
Основная проблема
- информационная организация. Информация, опосредующая процесс, и ее поведение следует сначала понять вместе с так называемыми бизнес-правилами, прежде чем разрабатывать или дополнять решения для процесса. Такой метод организации информации назывался нормализацией данных несколько десятилетий назад.
Тогда возможна только разработка решения, поскольку оптимальной стратегией является выравнивание гранулярности и модульности компонентов решения с гранулярностью и модульностью компонентов информации.
Существует два или три существенных препятствия для организации информации.
Отсутствие восприятия необходимости модели данных "нормализация".
Заявления Э. Ф. Кодда о нормализации данных ошибочны, ошибочны и неоднозначны.
Последнее увлечение, маскирующееся под гибкую инженерию, - ошибочное представление о том, что не следует планировать и обуславливать организацию модулей впереди, потому что вы можете выполнять рефакторинг по ходу работы. В качестве оправдания используется рефакторинг и постоянные изменения без препятствий для будущих открытий. Существенные открытия поведения информации о процессах, таким образом, с помощью учетных приемов для отсрочки получения прибыли и сборов, в связи с чем необходимые знания и их обработка в настоящее время считаются ненужными.
Хорошей практикой является использование интерфейсных констант.
Не придумывайте правил и не выдвигайте против них фетву только потому, что вам нравятся ваши привычные хитроумные привычки.
Не запрещайте владение оружием по той причине, что есть люди, которые либо не знают, как обращаться с оружием, либо склонны злоупотреблять оружием.
Если придуманные вами правила предназначены для программирования новичков, не умеющих профессионально программировать, и что вы считаете себя среди них, то скажите так - не объявляйте вашу фетву применимой к правильно нормализованным моделям данных.
Глупая аргументация - не предполагалось, что камбалы языка Java будут использовать интерфейсы таким образом? Мне все равно, какие первоначальные намерения отцы-основатели имели для Конституции США. Меня не волнуют неписаные некодифицированные намерения. Меня волнует только то, что буквально кодифицировано в письменной Конституции, и как я могу использовать их для эффективного функционирования общества.
Меня интересует только то, что позволяют мне спецификации языка / платформы Java, и я намерен использовать их в полной мере, чтобы предоставить мне возможность эффективно и действенно выражать свои программные решения. Куртки не требуются.
Использование констант Enum на самом деле ужасная практика.
Требуется написать дополнительный код для сопоставления параметра со значением. Тот факт, что основатели Java не предусмотрели сопоставление значения параметра без того, что вы написали, что код сопоставления демонстрирует, что константы Enum являются непреднамеренным использованием языка Java.
Тем более что вам не рекомендуется нормализовать и компоновать ваши параметры, может возникнуть ложное впечатление, что параметры, смешанные в пакет Enum, принадлежат одному и тому же измерению.
Константы являются контрактом API
Не забывайте это. Если вы разработали и нормализовали свою модель данных, и они содержат константы, то эти константы являются контрактами. Если вы не нормализовали свою модель данных, вам следует придерживаться фатв, приведенных в том, как применять ограничительное кодирование, чтобы справиться с этой вредной привычкой.
Таким образом, интерфейсы являются идеальным способом реализации контракта Константы.
Странное предположение - что, если интерфейс непреднамеренно будет реализован.
Да. Любой может непреднамеренно реализовать любой интерфейс. Ничто не помешает таким непреднамеренным программистам.
Дизайн и нормализация вашей модели данных от утечек
Не размещайте ограничительные указы для защиты от предполагаемых недобросовестных действий, приводящих к утечке несокращенных / случайных параметров в API. Решите фундаментальную проблему, а не возлагайте вину на константы интерфейса.
Не использовать IDE - плохая практика
Нормально работающий и ЭФФЕКТИВНЫЙ программист не может доказать, как долго она может оставаться под водой, как далеко она может ходить при жаре или влажных грозах. Она должна использовать эффективный инструмент, такой как автомобиль или автобус или, по крайней мере, велосипед, чтобы ежедневно проехать 10 миль до работы.
Не устанавливайте ограничения на коллег-программистов только потому, что у вас есть эзотерическая аскетическая одержимость программированием без IDE.
Пара фреймворков разработана, чтобы помочь программистам продолжать эффективно практиковать вредные привычки.
OSGI - это такая структура. Так же как и указ против констант интерфейса.
Поэтому окончательный ответ ...
Константы интерфейса - это эффективный и действенный способ включения в контракт хорошо спроектированных и нормализованных компонентов модели данных.
Интерфейсные константы в закрытом интерфейсе с соответствующим именем, вложенным в файл класса, также являются хорошей практикой для группировки всех ваших личных констант, а не для разбрасывания их по всему файлу.