Konwencja zamiast konfiguracji (CoC) — to zasada, która polega na tym, że system lub framework ma już domyślne konfiguracje, pozwalając programiście uniknąć pisania / tworzenia ustawień samodzielnie. Znacząco skraca to liczbę decyzji, które należy podjąć, i zmniejsza czas potrzebny na konfigurację oraz rozwój w ogóle.
Po raz pierwszy podejście to zyskało popularność dzięki frameworkowi Ruby on Rails. U podstaw Rails leży idea, że większość programistów będzie wykonywać podobne zadania w podobny sposób. Dlatego Rails zapewnia typowe rozwiązania, takie jak struktura plików, nazwy modeli, kontrolerów i baz danych. Jeśli przestrzega się przyjętych konwencji, system automatycznie konfiguruje wiele aspektów aplikacji. Na przykład model o nazwie Article będzie automatycznie odpowiadał tabeli articles w bazie danych, bez potrzeby dodatkowej konfiguracji.
To uwalnia programistę od rutynowej konfiguracji. Wyjątkowe przypadki, w których potrzebna jest indywidualizacja, można łatwo dostosować osobno, jednak główną część zadań można wykonać szybciej, korzystając z wcześniej zdefiniowanych konwencji.
Eliminacja nadmiernej konfiguracji pozwala skupić się na logice aplikacji, a nie na ustawieniach. Przyspiesza to rozwój i zmniejsza liczbę błędów, ponieważ mniej konfiguracji oznacza mniej miejsc, w których może wystąpić błąd. Jednocześnie podejście to można spotkać również poza Rails. Wiele nowoczesnych frameworków i narzędzi stosuje podobne podejście — od bibliotek JavaScript po systemy zarządzania infrastrukturą.
CoC jest jednym z kluczowych podejść do uproszczenia procesu rozwoju, gdzie aplikacje, które odpowiadają ustalonym konwencjom, wymagają minimalnej konfiguracji, a programista zyskuje większą swobodę w tworzeniu funkcjonalności zamiast pracy z drobnymi ustawieniami.
Przykład CoC (RoR)
Przyjrzyjmy się przykładzie CoC nieco bliżej, aby zrozumieć, gdzie dokładnie oszczędzamy czas i zmniejszamy prawdopodobieństwo błędów przez dodany kod niestandardowy.
Programista tworzy model – na przykład model Article w Rails.
Ponieważ Konwencja zamiast konfiguracji zakłada korzystanie z konwencji, Rails automatycznie oczekuje, że tabela dla tego modelu będzie nazywać się articles (standardowa liczba mnoga dla angielskich rzeczowników).
Rails automatycznie łączy ten model z tabelą articles w bazie danych, bez potrzeby dodatkowych ustawień. Jeśli konwencja pasuje, dodatkowa konfiguracja nie jest potrzebna.
Takie podejście uwalnia od zbędnej konfiguracji, ponieważ system polega na typowych ustawieniach.
Prościej mówiąc - framework już ma ogólne konfiguracje, które nie muszą być wymyślane samodzielnie, wystarczy tylko przestrzegać konwencji, aby wszystko działało "prosto z pudełka".