DRY 原則と、ASP.NET MVC での DRY 原則の重要性についてよく耳にしますが、Google で調査を行っても、DRY 原則が MVC にどのように適用されるかを正確に理解していないようです。
私が読んだことから、実際にはコピー&ペーストコードの匂いではないと思っていましたが、それ以上のものです。
ASP.NET MVC アプリケーションで DRY 原則をどのように使用するかについて、洞察を与えることができる人はいますか?
DRY 原則と、ASP.NET MVC での DRY 原則の重要性についてよく耳にしますが、Google で調査を行っても、DRY 原則が MVC にどのように適用されるかを正確に理解していないようです。
私が読んだことから、実際にはコピー&ペーストコードの匂いではないと思っていましたが、それ以上のものです。
ASP.NET MVC アプリケーションで DRY 原則をどのように使用するかについて、洞察を与えることができる人はいますか?
DRY は「Don't Repeat Yourself」という意味です。コードを記述するときは、一度だけ記述してください。すべての Controller クラスで同様の機能を記述している場合は、その機能を持つ基本コントローラー クラスを作成してから継承するか、すべてのコントローラーで同じ機能を繰り返すのではなく、その機能を別のクラスに移動してそこから呼び出します。
FormsAuthentication.Logout()
繰り返さないでください。プログラミングのさまざまな側面に適用できます。これの最も基本的なレベルは、コードの臭いを防ぐことです。ASP.NETを使用したことがないため、ASP.NETとMVCに固有のものを取得できません。
プロジェクトの「思考」を検討するとき。自問してみてください。
自分自身を繰り返さないことに関連する MVC の利点の 1 つは、コントローラーが 1 つのクラス内のすべてのページに共通のタスクを実行できることです。たとえば、特定の種類の悪意のある要求に対する検証や認証の検証を一元化できます。
DRY は特定のテクノロジーに固有のものではありません。機能の観点から (コピー/貼り付けコーダーの観点からでも) クラスを見て、重複が発生する場所を確認してください。このプロセスはおそらく 1 回で完了することはなく、数か月後に新しい機能を追加するときにコードをレビューした後に重複に気付くだけです。単体テストがある場合は、その重複を削除することを恐れる必要はありません。
DRYとUIについて説明できる最も一般的な例は、MasterPagesやUserControlsなどを使用することです。
MasterPagesは、すべての静的HTMLを1回だけ記述したことを確認します。
UserControlsは、コードの再利用性を保証します。たとえば、CRUDのような基本的なことを行うフォームがたくさんあります。理想的には、両方のフォームフィールドはほぼ同じですが、すべてのユーザーに[作成]と[更新]の異なるページを表示する必要があります。私たちにできることは、すべての共通のコントロールを組み合わせて、両方のページで再利用できるコントロールにそれらを配置することです。これにより、同じコードを再入力(またはコピー貼り付け)することがなくなります。
DRYは、同じタスクを実行するためのファイルの数が増えるため、MVCでは特に重要です。
ドメイン モデル内のすべてを特別なビュー モデルとしてコピーする必要があるという誤解があるようです。ドメイン モデルをドメイン モデルにすることもできますが、ビュー モデルはドメイン固有のものを何も知らず、より一般的なものにすることができます。例えば:
ドメイン モデル クラス: Account、Asset、PurchaseOrder
ビュー モデル: リスト、テーブル、タプル、SearchFormBackingModel:Checked オプション、Outputoptions など。ビュー自体は、ビューの実装に固有のものである可能性があります。
Tuple/Dictonary/Map は、Account、Asset、PurchaseOrder の単一インスタンスにマップされる可能性がありますが、テーブルはそれらのコレクションなどに役立つ場合があります。MVC はまだありますが、セッション データがあり、ビュー モデルでトランザクションの準備ができていないため、必ずしもビュー モデルで処理する必要はありません。ルールが適用されるドメインモデルのルールに違反すること。そのようにして、貧血やアンチパターンが少なくなります。これらのルールを前もって渡して、システムがクライアントからどのように読み取るかなどに応じて、そこで使用することも、後ろで使用することも、その両方を使用することもできます。
DRY はコードだけでなく、情報全般に適用する必要があります。ビルドシステムで繰り返していますか? 共通の構成ファイルなどに移動する必要があるデータはありますか?