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