Convention over configuration

Convention over configuration - принцип програмування ("угода головніша за конфігурацію", також відома як програмування за угодою). Він використовується у програмних фрейворках, щоб зменшити кількість рішень, які мусить приймати в роботі програміст, без втрати гнучкості архітектури створюваного додатку. Підхід було запропоновано Ханссон Давидом Хейнемейером щоб описати філософію фреймворку Ruby on Rails.

Одним словом - програміст має описувати лише ту частину кода який не підпадає під угоду про іменування і розміщення (файлів). Для прикладу, якщо є класс-модель Sales то в базі даних йому відповідатиме таблиця "sales" за умовчанням. І тільки якщо треба змінити ім'я таблиці (на "product sales" наприклад) програміст має сказати ім'я таблиці описуючи клас моделі.

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

Використання цього принципу суперечить пітоновському "explicit is better than implicit" (явно краще ніж неявно). Фреймворк, що базується на Convention over configuration як правило вводить свою "мову" (domain-specific language) для конфігурування системи, а також використовує шаблон інверсія контролю (коли програміст має вузький набір викликів - hooks).

Засобами, що звільняють програмістів від прийняття зайвих рішень, є також використання ідіом програмування (programming idioms) та конфігураційних бібліотек з багатошаровою архітектурою (multilayered architecture).

Мотивація

Деякі фреймворки вимагають великої кількості конфігураційних файлів. Вони містять інформацію, що є специфічною для кожного проекту - роутінги, маппінг БД. Таку кількість файлів з параметрами часто важко підтримувати.

Для прикладу, ранні версії Java використовують Hibernate, що об'єднує об'єкти в БД через конфігураційні XML файли. Більшість інформації, що має бути сконфігурована береться з угоди про іменування.

Використання

Багато сучасних фреймворків використовують даний принцип.

References

    • Bachle, M., & Kirchberg, P. (2007). "Ruby on rails". Software, IEEE, 24(6), 105-108. DOI 10.1109/BCI.2009.31.
    • Miller, J. (2009). "Design For Convention Over Configuration". Microsoft, Retrieved 18 April 2010.
    • Chen, Nicholas (2006). "Convention over configuration".
    This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.