0

さて、これは私が見つけることができる質問ですが、賛成/反対の適切な議論はほとんどありません.

これらのパターンがテスト容易性と関心の分離のために提供する価値を高く評価しています。特に、さまざまな方法でユーザーに提示できる、ある種のデータ ストアがある場合はそうです。

しかし、各モデルが 1 つのビューにのみバインドされているアプリケーションを考えてみましょう。例としては、オーディオ フォーマット コンバーターがあります。これは、(a) 大きな API バックエンドの上にある小さな GUI である可能性があります。UI に必要なのは基本的な検証 (パスとフォーマット) だけで、残りはバックエンドに任せられます。

ここでそのようなパターンの 1 つを使用する利点は、余分なコードを正当化するでしょうか? 個人的には、これは不要なオーバーヘッドだと思いますが、間違っている可能性が非常に高いため、質問です。:-)

編集:

ここで書いたサンプル アプリケーションは、質問の要点から人々の注意をそらしているようです。MVP/MVC が良くない場合に質問しています。以下はゴールデン4からの引用です。

デザイン パターンの使用方法についての議論は、それらを使用しない方法についてのいくつかの言葉がなければ完全ではありません。設計パターンを無差別に適用するべきではありません。多くの場合、追加レベルの間接化を導入することで柔軟性と可変性を実現します。これにより、設計が複雑になり、パフォーマンスが低下する可能性があります。設計パターンは、それが提供する柔軟性が実際に必要な場合にのみ適用する必要があります。

そして、それが質問の要点です。[MVC/MVP] を使用しない方法についてのいくつかの単語が見つからなかったので、質問はまさにそのための試みです。上で述べたように、私はそれらが提供する価値に本当に感謝していますが、それらが恐ろしいアイデアである場合を知りたいです. 確かにずっと良いパターンはありませんか?

4

5 に答える 5

3

私の意見では、小さな GUI が将来どうなるかはわかりません。そのため、スケーラビリティが最善の方法です。きれいなコードを書けるだけでなく、後で (たとえば、誰かがプロジェクトを引き継ぐとき) 非常に速くクリアになります。

私は外出先で小さなサイトを書いていましたが、すぐにこれが苦痛であることに気付きました。特に1年か2年後に現場に戻ったとき。

于 2013-05-14T12:27:20.283 に答える
1

とにかくやったほうがいい。大きな API の上に小さな GUI を置いているとおっしゃいましたが、私の意見では、それが最善のパターンです。その GUI は MVC でも何でもかまいませんが、M をサービス/API として持っていれば、重要なことを正しく行うことができます。使用しているツールを使用して、コードを少し追加する代わりにインターフェイスをすばやく開発できる場合は、おそらくそれが私の意見です。少なくとも、正しい方法でそれを行ったので、適切なコードから UI をアンピックする必要はありません。逆はもっと悪い。

どこにでも非効率性と悪い慣行があり、中には他のものより悪いものもあります。これは、懸念や知力に値するものではありません。たとえば、何かの色を変更すると、それが提供するビジネス シナリオが壊れてしまうため、何かの色を変更することはできません。プログラマーの時間は CPU 時間よりも価値があることを忘れないでください。N+1 SQL を検討したことがある場合は、Web サービスを使用してレポートを作成したり、1000 GB の XML をメモリに吸い込んだりしてから、もう一度質問してください。:)

于 2013-05-14T12:35:43.017 に答える
1

「その一例は、オーディオ フォーマット コンバーターかもしれません。これは、(a) 大きな API バックエンドの上にある小さな GUI かもしれません。」質問は、あなたのこの仮定から来ています。ただし、GUI や TUI などの代わりに、いくつかの交換可能な GUI、または IPC/RPC インターフェイス (サービスに変換する)、およびいくつかの異なる変換ロジックが存在する可能性があります。また、UI は単にデータを表現するためのものであるため、何も検証しません。そう考えると、ここにもMVCのパターンが当てはまります。

どのようなデータを持っていても、データ自体は常にその表現から切り離すことができるため、MVC は事実上どこでも使用できます (プログラムに何らかの出力がある場合)。簡単に言えば、MVC パターンは、高品質のソース コードを生成するためにあらゆる場所に適用する必要がある、関心の分離設計原則の特定のバージョンです。

どのような場合でも、UI にアプリケーション ロジックを含めるべきではありません。また、ビジネス ロジックに環境固有のコードを含めるべきではありません。したがって、2 つの間にレイヤーが必要になります。つまりコントローラー。結局のところ、とにかく MVC 構造を持つことになります。

于 2013-05-14T12:27:42.487 に答える
0

プロジェクトが常に小さいままであり、時間の経過とともに大きく変化しないことがわかっている場合、多くの設計パターンは無視できます。

しかし、あなたの例を挙げれば、元のデスクトップ アプリの代わりに Web アプリやモバイル アプリで同じオーディオ処理コードを使用することにした場合、 mvc。

于 2013-05-14T12:26:45.657 に答える