Разумные значения по умолчанию для конфигурации
Недавно я начал играть с Ruby on Rails, который предпочитает соглашения по конфигурации и полагается на разумные значения по умолчанию для объединения различных аспектов приложения.
Я подумал, что было бы полезно, если бы эта концепция разумной конфигурации по умолчанию использовалась в общей конфигурации для различных сред, тогда это могло бы сэкономить некоторую головную боль при разработке.
Например, в приложении.net я обычно хочу регистрировать исключение в журнале событий Windows, используя блок обработки исключений корпоративной библиотеки, но если я не объясню, какое поведение я хочу в конфигурационном файле, то EL пожалуется. Я думаю, что вместо этого, если он не может найти пользовательскую конфигурацию, он должен вернуться к разумной конфигурации по умолчанию, например, записать мое исключение в журнал событий.
Будет ли это хорошей или плохой концепцией для фреймворков для их конфигурации?
1 ответ
Я много работаю со структурой, которая делает именно эту вещь. Моя проблема с этим способом работы заключается в том, что:
- инфраструктура выросла до наличия чрезмерного количества ключей конфигурации, которые фактически никогда не используются / не устанавливаются в файле конфигурации.
- Поведение программного обеспечения иногда становится неявным, я хочу явно настроить систему так, чтобы она велась определенным образом, вместо того, чтобы использовать ее как запасной вариант на другом пути кода из-за "по умолчанию".
- пропущенная опечатка в конфигурационном ключе может привести к очень долгому диагностическому сеансу, прежде чем выяснить, что происходит.
Когда я забываю установить значение конфигурации, мне нужно, чтобы программное обеспечение сообщало мне, вместо того, чтобы принимать какую-то форму поведения, которой я мог бы вообще не следовать.
Я бы предпочел файл конфигурации "шаблона", в котором я изменяю то, что хочу, и неизменные настройки служат по умолчанию.
Выяснение того, какое соглашение выбрано программным обеспечением при отладке, также может быть потрачено много времени.