ASP.NET MVC - когда SRP и DRY кажутся конфликтующими

Мои простейшие контроллеры ASP.NET MVC 2 обращаются к моему сервисному слою и отображают модели представлений сущностей с помощью AutoMapper. Все выглядит фантастически и нет повторяющегося кода.

Однако, когда я нахожусь в сценариях, где у меня аналогичное поведение, у меня возникают проблемы с балансировкой принципа единой ответственности (SRP) с «Не повторяйся» (DRY). Примером этого может быть необходимость добавлять / редактировать транспортные средства, в которых одни свойства / поведение являются общими, а другие являются уникальными для конкретного транспортного средства.

Если я буду стремиться к действительно тонким контроллерам (таким образом соблюдая принцип единой ответственности), я в конечном итоге останусь повторяющийся код как в представлениях, так и в контроллерах с небольшими вариациями (заголовок, метки полей, видимость полей, значения раскрывающихся списков, критерии выбора и т. д.).

Если я стремлюсь к неповторяющимся кодам, я в конечном итоге объединяю слишком много логики один контроллер / представление, и он раздувается.

Каковы способы решения проблемы повторяющегося кода в контроллерах / представлениях? Я' Я не говорю о коде базы данных, который может быть перенесен в репозиторий. Я также не говорю о бизнес-логике, которая может быть перенесена на уровень сервиса. Я ищу инструменты и / или практические правила, которые помогут мне найти лучшее решение в описанном выше сценарии.

7
задан Mayo 12 November 2010 в 18:15
поделиться