最も単純なASP.NETMVC2コントローラーは、サービスレイヤーを呼び出し、AutoMapperを使用してビューモデルをエンティティにマップします。すべてが素晴らしく見え、繰り返されるコードはありません。
ただし、同様の動作をするシナリオに入ると、単一責任原則(SRP)とDo n't Repeat Yourself(DRY)のバランスを取るのに問題があります。この例としては、一部のプロパティ/動作が共有され、他のプロパティ/動作が特定の車両に固有である車両を追加/編集する必要がある場合があります。
本当に薄いコントローラーを目指して(したがって、単一責任の原則を尊重して)、ビューとコントローラーの両方で、わずかなバリエーション(タイトル、フィールドラベル、フィールドの可視性、ドロップダウン値、選択基準など)でコードを繰り返すことになります。
繰り返されないコードを目指して努力すると、ロジックを1つのコントローラー/ビューにバンドルしすぎて、肥大化してしまいます。
コントローラ/ビューで繰り返されるコードに対処するいくつかの方法は何ですか?リポジトリに分解できるデータベースコードについては話していません。また、サービス層に分解できるビジネスロジックについても話していません。上記のシナリオで最適なソリューションを作成するのに役立つツールや経験則を探しています。