Мне часто приходится реализовывать какую-то систему правил, которая редактируется пользователем - требования, как правило, достаточно разные, чтобы одна и та же система не применялась напрямую, поэтому я часто сталкиваюсь с одной и той же проблемой - как проектировать система правил, которая
- ремонтопригоден
- правильно сочетает выразительность с простотой использования
- легко расширяется (если / когда я ошибаюсь (2)).
Я думаю, что системы правил / DSL чрезвычайно ценны, но я не чувствую себя комфортно с их способностью правильно их проектировать.
Какие рекомендации / советы вы можете предложить, чтобы облегчить эту задачу?
Из-за характера проблем, с которыми я сталкиваюсь, существующие языки обычно не применимы. (Например, вы бы не требовали, чтобы обычные пользователи компьютера изучали python для написания фильтра электронной почты.) Аналогично, правило languages , такое как JESS , являются лишь частичным решением, поскольку некоторый (более простой) пользовательский интерфейс должен быть построен поверх языка правил, чтобы его могли использовать непрограммисты. Этот интерфейс неизменно включает в себя удаление некоторых функций или усложнение их использования, и этот процесс создает те же проблемы, что и описанные выше.
Редактировать: Чтобы уточнить, вопрос о проектировании механизма правил, я не ищу предварительно созданный механизм правил. Если вы предлагаете механизм правил, объясните, как он решает вопрос о принятии правильных проектных решений.