Есть ли какой-либо шаблон или трюк с рефакторингом для разделения дублирующихся данных Enum и DBDictionary - PullRequest
2 голосов
/ 15 января 2009

У нас вонючий код в нашем проекте. У многих значений, которые используются в бизнес-логике, есть 2 места, где они хранятся: у нас есть словарные таблицы (используемые в отношениях FK) в БД, где мы хранили значения e.x. MessageDirectionInfo:

0 | Unknown

1 | В

2 | Out

и у нас есть Enum с точно такими же данными: MessageDirectionEnum {Неизвестно = 0, В = 1, Выход = 2} И во всем коде у нас много «switch» и «if», где enum используется для условной логики. Но когда мы сохраняем в БД - мы должны «преобразовать» (что на самом деле «слепое выделение», в случае выбора точно таких же данных, кроме типа объекта результата). Перечислить значение в экземпляр класса Dictionary. Я понимаю, что Enums используется для очистки логики кода и данных БД, используемых для ссылки на внешние ключи, но на самом деле мне это не нравится.

Есть ли какой-нибудь шаблон для удаления такого поведения или какой-либо способ очистить часть этого "вонючего пути"? Или, может быть, я просто слепой, и это единственный ясный способ получить оба преимущества - базы данных FK и более понятную логику кода с перечислениями

1 Ответ

1 голос
/ 15 января 2009

Держите таблицу, но замените Enum классами ...? http://www.refactoring.com/catalog/replaceTypeCodeWithClass.html

...