8

Jeremy&ChadがFubuMvcプロジェクトについて投稿したとき、彼らが言及した差別化要因の1つは、「ThunderdomePrincipal」でした。

「Thunderdomeの原則」–すべてのControllerメソッドは、1つのViewModelオブジェクト(または場合によっては0のオブジェクト)を受け取り、1つのViewModelオブジェクトを返します(1つのオブジェクトが入り、1つのオブジェクトが出る)。Controllerクラスは、HttpContextに関連するものに直接公開されることはありません。その新しいIHttpContextWrapperインターフェースをモックまたはスタブするテストを作成しようとしている人々を見るほど私を泣かせるものはありません。同様に、ControllerメソッドはViewResultオブジェクトを返さず、通常、すべてのMVCインフラストラクチャから切り離されています。この戦略は、コントローラーのテストを機械的に簡単にする方法として、非常に早い段階で採用されました。それは間違いなくその目標を達成しましたが、コントローラーコードが非常に合理化されて読みやすくなりました。KaizenConfでこれがどのように機能するかを説明します。

'1つのViewModel(またはゼロ)in'アプローチの利点は何ですか?

4

3 に答える 3

9

その主な利点は、それが規則であり、すべてのコントローラーで一貫性を保つことです。これにより、統合テスト シナリオで環境を初期化できるテスト「コンテキスト」/フィクスチャのセットアップが容易になります。ほとんどの場合、Conventions == Rapidity は、設計上の考慮事項から多くの「what if」シナリオを削除するためです。

すべてのコントローラー アクションは同じパターンに従うため、多くのことを想定することができ、コントローラーの統合テスト作業が加速および合理化されます。

コントローラーアクションに複数の引数を持たせることは必ずしも悪いことではありませんが、モデルには単純なロジックを含めることができ、より複雑な側面のいくつかを簡単に実行できる便利なプロパティを公開できるため、実際のモデルオブジェクトを持つことで追加の機能が得られることがわかりました。独自の状態など - 基本的に、これは豊富なモデルを持つための議論であり、Thunderdome/OMIOMO パターンに固有のものではありません。

于 2009-02-06T16:12:31.690 に答える
0

サンダードームの原理の利点は、コントローラーが単純化されることです。http 値をオブジェクトにマッピングする作業はコントローラの外部で行われるため、コントローラは必要なことだけを行うことになります。

于 2009-02-06T04:25:39.807 に答える
0

利点は、コントローラー メソッドの外部からのコンテキスト (セッション状態など) に依存しないことです。これにより、モックを使用してそのコンテキストを「シミュレート」する必要がないため、テストが容易になりますが、すべてをパラメーターで渡す必要があるため、実用的ではなくなります。

于 2009-02-05T23:25:01.987 に答える