2010-09-29 6 views
1

Disons que vous avez un site Web qui vous permet de créer un compte avec trois propriétaires de compte différents. Chaque page d'entrée pour le propriétaire est une page aspx séparée. La première personne a des règles commerciales très différentes de celles des deuxième et troisième propriétaires. Le premier aura aussi plus de champs et différents seront requis pour eux mais pas pour les autres. J'utilise le MVP (Model View Presenter) pattern.Comment réduire la duplication dans le code - Si les instructions sont séparées de la classe

Je peux soit faire

A. Faire trois vues différentes et ont tous utiliser un présentateur qui a des déclarations ou spéciale, si les instructions switch pour voir si vous faites affaire avec un certain propriétaire et si oui à agir d'une certaine façon.

OU

B. Faire trois utiliser des vues séparées et ont tous leur propre présentateur qui se contentera d'exécuter la façon dont il est conçu pour que le propriétaire sans instructions IF nécessaires.

Je me sens en conflit parce que A semble la bonne chose à faire, mais pourrait être salissant avec toutes les déclarations IF partout et les gens pourraient les supprimer ou les modifier sans se rendre compte des répercussions. Bien que B semble beaucoup trop de duplication de code et semble tout simplement moche. Y a-t-il un point où vous dites que ces classes sont trop différentes pour être partagées et qu'il y a trop d'instructions IF pour les exceptions?

+3

Est-il possible d'extraire le code dupliqué dans un présentateur de base abstrait et d'en hériter les 3 autres? – Serguei

+0

La plupart des éléments communs sont uniquement dans le calque Modèle et partagés entre eux, alors que le présentateur pour la première personne varie considérablement de la deuxième et troisième, bien que la deuxième et la troisième soient essentiellement liées à des interfaces utilisateur différentes. – hyprsleepy

Répondre

3

Je suis d'accord avec le commentaire ci-dessus. Placez le code commun pour votre présentateur dans une classe de base et faites en sorte que les trois présentateurs enfants spécifiques en héritent. Cela suit l'un des principes de base lors de la conception d'un système: "Identifier les aspects de votre application qui varient et les séparent de ce qui reste le même."

Bonne chance.

1

Ne pas A.

Faites ce que Serguei suggéré ou faire une classe logique commune avec le code dupliquée vous parlez.

Questions connexes