我正在研究一个非常简单的问题,具有设计后果。
请耐心等待,我用模糊的语言描述情况。我有一个实体,叫它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();
}
因此,请记住,我可能会遇到类似的情况,什么是抽象“奇怪”硬编码值的条件逻辑的好方法?