Convention over configuration — принцип програмування («угода головніша за конфігурацію», також відома як програмування за угодою). Він використовується у програмних фрейворках, щоб зменшити кількість рішень, які мусить приймати в роботі програміст, без втрати гнучкості архітектури створюваного додатку. Підхід було запропоновано Ханссон Давидом Хейнемейером щоб описати філософію фреймворку Ruby on Rails.
Одним словом — програміст має описувати лише ту частину коду, яка не підпадає під угоду про іменування і розміщення (файлів). Для прикладу, якщо є клас-модель Sales, то в базі даних йому відповідатиме таблиця «sales» за умовчанням. І тільки якщо треба змінити ім'я таблиці (на «product sales» наприклад) програміст має вказати ім'я таблиці описуючи клас моделі.
Якщо всі частини додатку іменовані згідно угоди, то система має працювати без жодного рядку конфігураційного коду. І тільки якщо треба змінити розташування якихось елементів системи, програміст має сконфігурувати систему.
Використання цього принципу суперечить пайтонівському «явне краще ніж неявне» (англ. explicit is better than implicit). Фреймворк, що базується на Convention over configuration як правило надає свою «мову» (предметно-орієнтована мова програмування) для конфігурування системи, а також використовує шаблон інверсії керування у якому коли програміст має втілити вузький набір викликів — перехоплень.
Засобами, що звільняють програмістів від прийняття зайвих рішень, є також використання ідіом програмування ([en]) та конфігураційних бібліотек з багатошаровою архітектурою ([en]).
Мотивація
Деякі фреймворки вимагають великої кількості конфігураційних файлів. Вони містять інформацію, що є специфічною для кожного проекту — роутінги, маппінг БД. Таку кількість файлів з параметрами часто важко підтримувати.
Для прикладу, ранні версії Java використовують Hibernate, що об'єднує об'єкти в БД через конфігураційні XML файли. Більшість інформації, що має бути сконфігурована береться з угоди про іменування.
Використання
Багато сучасних фреймворків використовують даний принцип.
Примітки
- 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».
Посилання
- Detailed information on CoC [ 24 січня 2010 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Convention over configuration princip programuvannya ugoda golovnisha za konfiguraciyu takozh vidoma yak programuvannya za ugodoyu Vin vikoristovuyetsya u programnih frejvorkah shob zmenshiti kilkist rishen yaki musit prijmati v roboti programist bez vtrati gnuchkosti arhitekturi stvoryuvanogo dodatku Pidhid bulo zaproponovano Hansson Davidom Hejnemejerom shob opisati filosofiyu frejmvorku Ruby on Rails Odnim slovom programist maye opisuvati lishe tu chastinu kodu yaka ne pidpadaye pid ugodu pro imenuvannya i rozmishennya fajliv Dlya prikladu yaksho ye klas model Sales to v bazi danih jomu vidpovidatime tablicya sales za umovchannyam I tilki yaksho treba zminiti im ya tablici na product sales napriklad programist maye vkazati im ya tablici opisuyuchi klas modeli Yaksho vsi chastini dodatku imenovani zgidno ugodi to sistema maye pracyuvati bez zhodnogo ryadku konfiguracijnogo kodu I tilki yaksho treba zminiti roztashuvannya yakihos elementiv sistemi programist maye skonfiguruvati sistemu Vikoristannya cogo principu superechit pajtonivskomu yavne krashe nizh neyavne angl explicit is better than implicit Frejmvork sho bazuyetsya na Convention over configuration yak pravilo nadaye svoyu movu predmetno oriyentovana mova programuvannya dlya konfiguruvannya sistemi a takozh vikoristovuye shablon inversiyi keruvannya u yakomu koli programist maye vtiliti vuzkij nabir viklikiv perehoplen Zasobami sho zvilnyayut programistiv vid prijnyattya zajvih rishen ye takozh vikoristannya idiom programuvannya en ta konfiguracijnih bibliotek z bagatosharovoyu arhitekturoyu en MotivaciyaDeyaki frejmvorki vimagayut velikoyi kilkosti konfiguracijnih fajliv Voni mistyat informaciyu sho ye specifichnoyu dlya kozhnogo proektu routingi mapping BD Taku kilkist fajliv z parametrami chasto vazhko pidtrimuvati Dlya prikladu ranni versiyi Java vikoristovuyut Hibernate sho ob yednuye ob yekti v BD cherez konfiguracijni XML fajli Bilshist informaciyi sho maye buti skonfigurovana beretsya z ugodi pro imenuvannya VikoristannyaBagato suchasnih frejmvorkiv vikoristovuyut danij princip PrimitkiBachle M amp 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 PosilannyaDetailed information on CoC 24 sichnya 2010 u Wayback Machine