Question

Je travaille sur un problème assez simple, avec des ramifications design.

Please avec moi, alors que je décris la situation de vague termes. J'ai une entité, appelez cela entitya:

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

Cette entité est stockée dans une base de données et tout fonctionne bien.

En tant que nouvelle exigence, je dois ajouter des attributs d'audit à l'entitéa. Maintenant j'ai:

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

Lorsque vous ajoutez les nouvelles colonnes à la base de données, j'identifie les valeurs par défaut: Whocreated= Système quand créé= 24 janvier 2012.

Une autre partie de l'exigence est que je ne montre pas les attributs "Créer" de l'écran, s'ils ont les valeurs de conversion / défaut.

Je sais que je devrai placer la logique à tester pour cela dans la couche d'affichage. Cela dit, cependant, quelque chose semble drôle d'avoir explicitement placé la logique conditionnelle là-bas.

Par exemple, au lieu de ceci:

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

Je pense que je devrais faire quelque chose comme ceci:

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

Ainsi, gardant à l'esprit que je risquerai probablement de rencontrer des situations similaires, ce qui est un bon moyen de résumer la logique conditionnelle pour les valeurs codées "étranges"?

Était-ce utile?

La solution

Je vous interprète de question comme "J'ai une liste d'objets modèles, et certains ont des valeurs par défaut et certaines ne ... Où est-ce que je déciderai de savoir quoi montrer?"

Je pense que la couche de vue est exactement où vous ne manipulez pas de gérer cela.

Les objets du modèle contiennent simplement les données et disposent de méthodes de manipulation des données.C'est le travail de la vue de déterminer comment afficher les données.

Autres conseils

Sa bonne pratique pour filtrer les données dans le niveau de l'entreprise plutôt que de tout envoyer au calque de présentation et décider de la météo de rendre ou non.J'espère que cela aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top