Какой хороший способ абстрагировать условную логику для «странных» жестко закодированных значений? - PullRequest
2 голосов
/ 25 января 2012

Я работаю над довольно простой проблемой с проектными последствиями.

Пожалуйста, потерпите меня, пока я описываю ситуацию в смутных терминах.У меня есть объект, назовите его EntityA:

EntityA{
   attr1 : type1;
   attr2 : type2;
   . . .
}

Этот объект хранится в базе данных, и все работает отлично.

В качестве нового требования мне нужно добавить атрибуты аудита вEntityA.Теперь у меня есть:

EntityA{
   . . .
   whenCreated : Date (not null);
   whoCreated : User (not null);
   whenLastUpdated : Date;
   whoLastUpdated : User;
}

При добавлении новых столбцов в базу данных я назначаю значения по умолчанию: whoCreated = System whenCreated = 24-Jan-2012.

Другая часть требования - эточто я не показываю атрибуты «создания» на экране, если они имеют значения преобразования / значения по умолчанию.

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

Например, вместо этого:

if((entA.whenCreated != '24-Jan-2012') 
        && (entA.whoCreated != 'System')){
    showCreationAudit();
}

Я думаю, что я должен сделать что-то вроде этого:

if( shouldDisplayCreationAudit(entA) ){
    showCreationAudit();
}

Итак, учитывая, что я, скорее всего, столкнусь с подобными ситуациями, каков хороший способ абстрагировать условную логику для «странных» жестко закодированных значений?

Ответы [ 2 ]

2 голосов
/ 25 января 2012

Я интерпретирую ваш вопрос следующим образом: «У меня есть список объектов модели, и у некоторых есть значения по умолчанию, а у некоторых нет ... Где я могу решить, что показывать?»

Я думаю, что слой вида точно , где вы не хотите с этим справляться.

Объекты модели просто хранят данные и имеют несколько методов для манипулирования данными. Задачей представления является определение способа отображения данных.

1 голос
/ 25 января 2012

Рекомендуется фильтровать данные на бизнес-уровне, а не отправлять все на уровень представления и выбирать погоду для визуализации или нет.Надеюсь, это поможет.

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