Как уменьшить дублирование в коде - если операторы против отдельного класса - PullRequest
1 голос
/ 29 сентября 2010

Допустим, у вас есть веб-сайт, позволяющий создать учетную запись с тремя различными владельцами учетных записей.Каждая страница входа для владельца является отдельной страницей aspx.Первый человек имеет совсем другие бизнес-правила, чем второй и третий владельцы.У первого также будет больше полей, и для них потребуются другие, но не для других.Я использую шаблон MVP (Model View Presenter) .

Я могу сделать либо

A.Создайте три отдельных представления и попросите их всех использовать одного докладчика, который имеет специальные операторы IF или операторы Switch, чтобы выяснить, имеете ли вы дело с определенным владельцем и, если да, действовать определенным образом.

ИЛИ

B.Создайте три отдельных представления и пусть все они будут использовать своего собственного Presenter, который будет просто выполнять то, что он предназначен для этого владельца, без каких-либо необходимых операторов IF.

Я чувствую конфликт, потому что A кажется правильным, но можетзапутаться во всех утверждениях IF везде, и люди могут удалить или изменить их, не осознавая последствий.Хотя B кажется слишком большим дублированием кода и выглядит ужасно.Есть ли точка, в которой вы говорите, что эти классы слишком разные, чтобы делиться ими, и слишком много операторов IF для исключений?

Ответы [ 2 ]

3 голосов
/ 29 сентября 2010

Я бы согласился с комментарием выше. Поместите общий код вашего докладчика в базовый класс и унаследуйте от него три конкретных дочерних докладчика. Это следует одному из основных принципов при разработке системы: «Определите аспекты вашего приложения, которые различаются, и отделите их от того, что остается неизменным».

Удачи.

1 голос
/ 29 сентября 2010

Не А.

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

...