"Convention over Configuration" (CoC) — это парадигма разработки программного обеспечения, которая отдает предпочтение стандартным соглашениям перед явными конфигурациями. Основная идея: разработчик должен указывать только нетривиальные аспекты приложения, а все стандартные вещи работают "из коробки" согласно принятым соглашениям.
Ruby on Rails — самый известный пример применения этого принципа. Рассмотрим на конкретных примерах:
# Соглашение по именованию модели и таблицы
class User < ApplicationRecord
end
# Автоматически связывается с таблицей 'users'
# Соглашение по маршрутам
resources :articles
# Автоматически создаёт 7 стандартных RESTful-маршрутов
Именование моделей и таблиц:
User → таблица usersPerson → таблица people (автоматическое pluralization)Структура каталогов:
app/controllersapp/modelsapp/viewsАвтозагрузка:
Соглашения можно и иногда нужно нарушать, но для этого должны быть веские причины:
# Пример явного указания таблицы для модели
class User < ApplicationRecord
self.table_name = 'system_users'
end
| Подход | Плюсы | Минусы |
|---|---|---|
| Convention | Быстро, стандартно | Менее гибко |
| Configuration | Максимальная гибкость | Много boilerplate-кода |
| Annotation-based | Удобно, наглядно | Загрязнение кода |
Рассмотрим, как CoC работает в ORM:
class Product < ApplicationRecord
end
Этот простой класс получает:
productshas_many, belongs_to)Резюмируем: "Convention over Configuration" — это мощный принцип, который значительно ускоряет разработку за счёт разумных умолчаний и стандартизации. В экосистеме Ruby, особенно в Rails, он применяется очень последовательно, позволяя разработчикам сосредоточиться на бизнес-логике, а не на настройке инфраструктуры. Однако важно понимать и иногда явно документировать случаи отклонения от стандартных соглашений.