2009-05-22 3 views
0

Мы хотим реализовать бизнес-логику на основе записей в таблице. У нас есть два варианта.Enum vs Config File

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

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

Каков наилучший шаблон программирования для этого вопроса?

ответ

2

Почему бы не сохранить все это вместе и поместить таблицу в базу данных, которая сообщает вам, какая таблица бизнес-записей будет следующей?

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

+0

+1 Это разумная альтернатива –

+0

+1 жаль, что я не отказался от вашего ответа .. –

+0

, но это также путь –

1

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

0

Перечисления должны быть постоянными и неизменными. Если у вас есть решение, требующее изменения для перечисления, то перечисления являются неправильным решением.

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

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

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

0

Это звучит как нечто вроде государственного рисунка. Я полагаю, что у вас есть таблица, в которой хранятся состояния (ID, имя) и логика, связанные с каждым в вашем приложении. Учитывая идентификатор состояния, учитывая логику, которую вы должны выполнить. Вам нужно решить, как создать правильное состояние, если вы используете ORM, вы можете использовать дискриминатор (идентификатор состояния в этом случае).