Что такое «кодирование по соглашению»? - PullRequest
22 голосов
/ 23 мая 2009

Я смотрел на Groovy на Grails и заметил линию внизу, которая говорит:

Grails стремится донести до Groovy парадигму «кодирование по соглашению».

Что такое кодирование по соглашению?

Ответы [ 6 ]

23 голосов
/ 23 мая 2009

Соглашение о конфигурации (иначе - кодирование по соглашению) - это парадигма разработки программного обеспечения, целью которой является уменьшение числа решений, которые должны принимать разработчики, получение простоты, но не обязательно потеря гибкости.

Фраза, по сути, означает, что разработчику нужно только указать нетрадиционные аспекты приложения. Например, если в модели есть класс Sale, соответствующая таблица в базе данных называется продажей по умолчанию. Только в случае отклонения от этого соглашения, например, при вызове таблицы «products_sold», необходимо написать код, относящийся к этим именам.

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

Из Статья "Соглашение над конфигурацией" в Википедии .

15 голосов
/ 23 мая 2009

В контексте Grails «кодирование по соглашению» означает, что многие (утомительные и повторяющиеся) явный код и / или конфигурация заменяются простыми соглашениями об именах и структуре каталогов. Например:

  • Любой класс, имя которого заканчивается на Controller в каталоге grails-app / controllers, автоматически становится контроллером Spring, и определенные в нем замыкания будут привязаны к URL-адресам - вам не нужно настраивать это в XML-файле, как это было бы при использовании чистой весны.
  • То же самое относится и к taglibs (каталог grails-app / taglib) - больше нет утомительных файлов TLD!
  • Доменные классы в grails-app / domain, вероятно, имеют наиболее "магическое соглашение", будучи автоматически сопоставленными с автоматически сгенерированной схемой БД - при этом имена таблиц и столбцов БД по соглашению идентичны именам свойств домена.
9 голосов
/ 23 мая 2009

Кодирование по соглашению против кодирования по конфигурации: Идея, что у вас есть определенные соглашения о размещении или присвоении имен вещам, чтобы вам не приходилось явно указывать программе, где находится материал или как он называется.
Например, в ASP.Net MVC существует соглашение о том, где хранятся представления и как они называются. Это означает, что когда ваш код указывает серверу вернуть представление, среда выполнения будет искать представление с определенной структурой именования в определенных папках. См. Стр. 20 в этом pdf для большей ясности.

Другим примером могут быть соглашения об именах методов. Например, в языке, управляемом событиями, у вас может быть возможность явно объявить, какой метод обрабатывает какие события, или вы можете полагаться на соглашение об именах - например, ..._ OnOpen или ... OnClick, а затем полагаться на среду выполнения для выяснения правильный метод для вызова данного события.

4 голосов
/ 23 мая 2009

См. Соглашение о конфигурации . Это концепция разработки инструмента или инфраструктуры, в которых в качестве параметров по умолчанию используются наиболее распространенные параметры конфигурации, поэтому для подавляющего большинства пользователей настройка не требуется.

3 голосов
/ 23 мая 2009

Здесь много соглашений:

  1. Как назвать элементы HTML, чтобы они были легко доступны в качестве параметров из HTTP-запроса;
  2. Как связать атрибуты объекта с именами таблиц и столбцов в базе данных;
  3. Как оформить проект в каталоги / пакеты;

Это то, что вы делаете, когда обнаруживаете, что решаете общую проблему в определенном стиле. Вы замечаете сходства и систематизируете их в какую-то схему автоматизации.

2 голосов
/ 23 мая 2009

Это означает, что если вы будете придерживаться определенных соглашений о кодировании, как это определено используемой платформой, основанной на соглашениях, вы получите множество функций бесплатно. Другими словами, если вы структурируете свое приложение в соответствии с тем, что ожидает фреймворк, большая часть работы может быть сохранена.

Было бы неплохо рассмотреть преимущества и недостатки кодирования по соглашению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...