Что такое Convention over Configuration (CoC)? Для чего применяется этот принцип.
Что такое Convention over Configuration?
Новые ответы
Сonvention over Сonfiguration — это принцип построения фреймворков и библиотек, призванный сократить количество требуемой конфигурации без потери гибкости. Обычно переводится как «соглашения по конфигурации». В строгой форме этот принцип можно выразить так: аспект программной системы нуждается в конфигурации тогда и только тогда, когда этот аспект НЕ удовлетворяет некоторой спецификации. Принцип работает когда речь идет о меппинге классов на какие-либо ресурсы (таблицы базы данных, события, ресурсы файловой системы). Согласно принципу, если класс соответствует соглашению наименования, тогда он не нуждается в дополнительной конфигурации. В этом контексте название принципа можно перевести как «Соглашение НАД конфигурацией», такой перевод указывает на первостепенность соглашения, а не конфигурации.
Классический пример CoC принципа — Hibernate. В Hibernate правила объектно-реляционного меппинга можно описывать с помощью XML-файлов:
<class name="Tag" table="tag">
<property name="Name" column="name"/>
<property name="Value" column="value"/>
<property name="Value2" column="value2"/>
<property name="Value3" column="value3"/>
</class>
Как видно, здесь имеются повторения свойств класса и колонок таблицы. Если ввести соглашение о том, что по умолчанию колонки таблицы должны назаваться также как свойство, то можно опустить часть конфигурации:
<class name="Tag">
<property name="Name"/>
<property name="Value"/>
<property name="Value2"/>
<property name="Value3"/>
</class>
Однако, если какое-то свойство потребуется сохранить в колонку с отличным именем, это придется указать явно. В этом и состоит суть принципа.
Наибольшее применение принцип CoC находит в среде Ruby on Rails. Это в принципе понятно, если учесть, что ror ориентирована на быструю разработку, а coc позволяет свести конфигурацию к минимуму.