Jump to content

Соглашение важнее конфигурации

Соглашение о конфигурации (также известное как кодирование по соглашению ) — это парадигма проектирования программного обеспечения , используемая программными платформами , которая пытается уменьшить количество решений, которые разработчик, использующий структуру, должен принимать, не теряя при этом гибкости и не повторяясь (DRY ) принципы. [1]

Эта концепция была введена Дэвидом Хайнемейером Ханссоном для описания философии Ruby on Rails веб-фреймворка , но она связана с более ранними идеями, такими как концепция «разумных значений по умолчанию » и принцип наименьшего удивления в дизайне пользовательского интерфейса .

По сути, эта фраза означает, что разработчику нужно указать только нетрадиционные аспекты приложения. Например, если есть класс в модели Продажи, соответствующая таблица в базе данных по умолчанию называется «Продажи». Только в том случае, если кто-то отклоняется от этого соглашения, например, от таблицы «Продажи продукции», необходимо писать код, касающийся этих имен.

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

Использование этой фразы в Ruby on Rails особенно сосредоточено на структуре файла проекта и каталогов проекта по умолчанию, что избавляет разработчиков от необходимости писать файлы конфигурации XML , чтобы указать, какие модули должна загружать платформа, что было обычным явлением во многих более ранних платформах.

Недостатки

[ редактировать ]

Недостатки подхода, основанного на соглашении по сравнению с конфигурацией, могут возникать из-за конфликтов с другими принципами проектирования программного обеспечения, такими как принцип Дзен Python «явное лучше, чем неявное». Программная среда, основанная на соглашении о конфигурации, часто включает в себя предметно-ориентированный язык с ограниченным набором конструкций или инверсию управления , в которой разработчик может влиять на поведение только с помощью ограниченного набора перехватчиков , и то и другое может затруднить реализацию поведения. выразить с помощью предоставленных соглашений сложнее, чем при использовании библиотеки программного обеспечения , которая не пытается уменьшить количество решений, которые должны принимать разработчики, или не требует инверсии управления.

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

Мотивация

[ редактировать ]

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

Например, ранние версии Java-сопоставителя персистентности Hibernate сопоставляли сущности и их поля с базой данных, описывая эти связи в XML-файлах. Большую часть этой информации можно было бы получить путем традиционного сопоставления имен классов с таблицами базы данных с одинаковыми именами , а полей с их столбцами соответственно. Более поздние версии отказались от файла конфигурации XML и вместо этого использовали эти самые соглашения, отклонения от которых можно указать с помощью аннотаций Java (см. спецификацию JavaBeans, ссылку ниже).

Использование

[ редактировать ]
Программный инструмент Maven автоматически создал эту структуру каталогов для проекта Java.

Многие современные фреймворки используют подход, основанный на соглашении, а не на настройке .

Однако эта концепция более старая, она восходит к концепции default , и совсем недавно ее можно обнаружить в корнях библиотек Java . Например, спецификация JavaBeans в значительной степени опирается на него. Процитируем спецификацию JavaBeans 1.01: [2]

«Как правило, мы не хотим изобретать огромный класс java.beans.everything, от которого людям придется наследовать. Вместо этого мы хотим, чтобы среда выполнения JavaBeans обеспечивала поведение по умолчанию для «обычных» объектов, но позволяла объектам переопределить заданную часть поведения по умолчанию, унаследовав от некоторого конкретного интерфейса java.beans.something».

См. также

[ редактировать ]
  1. ^ Дойл, Керри (11 ноября 2021 г.). «Программирование на Ruby: критический взгляд на плюсы и минусы» . Поиск по архитектуре приложения . Проверено 17 декабря 2021 г.
  2. ^ Вс (24 июля 1997 г.). Спецификация JavaBeans. Архивировано 6 апреля 2012 г. на Wayback Machine , раздел 1.4.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a92515c661b15b37844244a2c765faf6__1712090460
URL1:https://arc.ask3.ru/arc/aa/a9/f6/a92515c661b15b37844244a2c765faf6.html
Заголовок, (Title) документа по адресу, URL1:
Convention over configuration - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)