Moje najprostsze kontrolery ASP.NET MVC 2 wykonują połączenia z moją warstwą usług i mapują modele widoków do obiektów wykorzystujących AutoMapper. Wszystko wygląda fantastycznie i nie ma powtarzającego się kodu.ASP.NET MVC - kiedy SRP i DRY wydają się być w konflikcie
Jednak, kiedy się w scenariuszach, w których mam podobny zachowanie mam problemy równoważenia Pojedyncze Responsibility Principle (SRP) z not Repeat Yourself (suchy). Przykładem może być potrzeba dodania/edycji pojazdów, w których niektóre właściwości/zachowania są wspólne, podczas gdy inne są unikalne dla określonego pojazdu.
Jeśli dążę do uzyskania naprawdę cienkich kontrolerów (w ten sposób honorując zasadę odpowiedzialności pojedynczej), kończę na powtarzaniu kodu zarówno w widokach, jak i kontrolerach z niewielkimi zmianami (tytuł, etykiety pól, widoczność pola, wartości rozwijane, kryteria wyboru itp. .).
Jeśli dążę do tego, aby nie powtarzać kodu, kończę pakowanie zbyt dużej logiki do pojedynczego kontrolera/widoku i robi się nadęty.
Jakie są sposoby adresowania powtarzanego kodu w kontrolerach/widokach? Nie mówię o kodzie bazy danych, który można obliczyć w repozytorium. Nie mówię również o logice biznesowej, którą można obliczyć na poziomie warstwy usług. Szukam narzędzi i/lub reguł, które pomogą mi stworzyć najlepsze rozwiązanie w scenariuszu opisanym powyżej.
Zbyt abstrakcyjne, konkretne przykłady kodu. –
@Darin: Masz teraz wiele racji, że myślę o tym, o co prosiłem - zajmie to trochę czasu, ale przekonam się, czy uda mi się poprawić pytanie za pomocą czegoś bardziej konkretnego. – Mayo