コントローラーを薄く保つ(アクションメソッドが多すぎる)
-
26-09-2019 - |
質問
私は初めての実際の ASP.NET MVC プロジェクトに取り組んでいますが、これまで作業してきたコントローラーがかなり大きくなっていることに気づきました。これは、コントローラーを薄く保つというベスト プラクティスに一見反しているように見えます。
ビジネス ロジックをコントローラーから遠ざけるのに成功しました。そのために別のレイヤーを使用します。各アクションは主にビジネス層のメソッドを呼び出し、モデル状態が有効かどうかに基づいて最終結果を調整します。
とはいえ、コントローラーには多数のアクションメソッドがあります。直感的には、コントローラーをサブコントローラーに分割したいと考えていますが、それを行う簡単な方法が見つかりません。コントローラーを別々のコントローラーに単純に分割することもできますが、階層が失われ、少し汚く感じられます。
多数のシン アクションを含むコントローラーをリファクタリングする必要がありますか?もしそうなら、これを行うための最良の方法は何ですか?
解決
まず、コントローラー コードを最小限に抑えることが良いと聞いた場合、これは主に、各アクション メソッドを可能な限り薄く保つこと (代わりにロジックをビジネス クラスに配置すること) を指します。 ない View と ViewModel に変換します。) これを実行しているようですが、これは素晴らしいことです。
アクションメソッドが「多すぎる」かどうかについては、判断の余地があります。実際、各アクションが 1 つのことに集中しているということは、組織化がうまく進んでいることの表れである可能性があります。また、RenderAction 専用のアクションを使用している可能性がありますか?また、コントローラーのテーマに関連して行うべきことが数多くあるのは、単にソリューションの性質によるものである可能性があります。
ですから、おそらく大丈夫だと思います。ただし、念のため、メモ用紙にコントローラーを 2 つまたは 3 つのコントローラーに分割し、アクションからアクションに移行するストーリーがどのように機能するかをスケッチします。また、ワークフローがより多くのコントローラーで動作することがわかった場合は、それを解消する必要があります。特に、後でこの機能を追加する場合はそうです。打開するのは早ければ早いほど良いです。
他のヒント
よい質問ます。
私は「薄い」コントローラは、まだあなたが類推をストレッチする方法に応じて、「ワイド」または「背の高い」する必要があるかもしれません信じています。たくさんのことを行う必要があるコントローラーを分解するために何のクリーンな方法が存在しない場合、私は、各アクションがビュー/のviewmodelsの準備に特化し、制限されたコードのサイズであるとおりである。それが長いなどの問題はないと思いますP>
あなたが持っているもう一つの構造的なオプションは、アクションの論理的なグループのための部分的なクラスを導入しています。そして、ファイルをグループにvscommandsのようなものを使用します。
私は誰もが、それはものを壊して、新しいコントローラーを導入することをお勧めしますと、それは本当にあなたのドメインに依存を示していますアクションのマジックナンバーを思い付くことができます疑います。