2

我正在研究一个非常简单的问题,具有设计后果。

请耐心等待,我用模糊的语言描述情况。我有一个实体,叫它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();
}

因此,请记住,我可能会遇到类似的情况,什么是抽象“奇怪”硬编码值的条件逻辑的好方法?

4

2 回答 2

2

我将您的问题解释为,“我有一个模型对象列表,有些有默认值,有些没有……我在哪里决定要显示什么?”

我认为视图层正是您不想处理的地方。

模型对象只保存数据,并在它们上具有一些用于操作数据的方法。视图的工作是确定如何显示数据。

于 2012-01-24T21:21:27.203 回答
1

在业务层过滤数据而不是将所有内容发送到表示层并决定是否渲染天气的好习惯。希望这可以帮助。

于 2012-01-24T21:19:41.507 回答