Размещение исключений в коде или в данных - PullRequest
0 голосов
/ 28 августа 2009

Большая часть кода (и большинство ошибок) вызвана обработкой исключений, такой как: если установлен флажок, то поля ввода 1, 5, 8 и 9 обязательны для заполнения. в противном случае, если введено b, поля ввода 3, 4, 8 обязательны для заполнения. в противном случае, если проверяется a и b, то поля 1, 3 и 8 обязательны для заполнения

(выше приведен пример ошибочного кода, так как код с последним условием никогда не выполняется, так как выполняется первое, если проверено a, а затем обходится третье условие ... просто пример потенциальных ошибок)

Лучше ли иметь операторы if / switch, подобные приведенным выше, в коде ИЛИ, чтобы создать таблицу исключений, в которой вы будете передавать условия (выберите *, где отмечен a), а возвращаемые значения указывают, какие поля являются обязательными (это простой пример) ...

Плюсы: проще модифицировать логику в производстве (обновить базу данных), упрощение кода Минусы: столы и доц. Логика возврата правил может привести к путанице, снижение производительности при переходе в базу данных для обработки правил ...

мысли? Кто-нибудь имеет опыт работы с базой данных?

1 Ответ

0 голосов
/ 28 августа 2009

Внешние правила для некоторого специализированного «двигателя» могут быть разумным подходом по причинам простоты обслуживания. Существует достаточно рынка для мощных правил двигателей.

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

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

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

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