Шаблон для обработки «динамических перечислений», которые может изменить пользователь (независимость от языка программирования) - PullRequest
0 голосов
/ 06 октября 2011

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

Представьте, что в приложении для управления возникает ситуация, когда пользователь (а не программист) может заполнить таблицу, которая отражает уровень навыков программирования его сотрудников. Чем он может присвоить эти значения emplyees в таблице emplyees.

Итак, ситуация в базе данных такая:

Table: ProgrammingSkillLevel
  - ID
  - Name
  - Value
Table: Employees
  - ID
  - SomeUselessData
  - ProgrammingSkillLevelID

В программировании я обычно делаю это как enum (я буду использовать C #):

enum ProgrammingSkillLevel
{
    Starter = 0,
    Medium,
    Advanced,
}

Преимущество этого подхода заключается в использовании Имен вместо значений. Фактически, если мы изменим перечисление на что-то вроде этого:

enum ProgrammingSkillLevel
{
    Starter = 0,
    Medium,
    Good,
    Advanced,
}

У нас не будет проблем, потому что мы используем имена. В моем подходе к базе данных я использую идентификаторы, чтобы избежать некоторых байтов (я знаю, что есть тип enum, но пользователь должен заполнять таблицу, а не я!), А не имена, поэтому преимущество определенно потеряно.

Какой подход я должен использовать, чтобы позволить пользователю генерировать то, что я называю "динамическими перечислениями"? Должен ли я использовать имена?

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

1 Ответ

0 голосов
/ 08 октября 2011

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

...