特定のフレームワークで使用する予定のシステムまたはアプリケーションを開発する場合、フレームワークを考慮せずにシステムを設計するのがベストプラクティスですか、それとも「フレームワークを使いやすい時間で」という考え方でシステムを設計することをお勧めしますこれとともに"。
特定のフレームワークで使用する予定のシステムまたはアプリケーションを開発する場合、フレームワークを考慮せずにシステムを設計するのがベストプラクティスですか、それとも「フレームワークを使いやすい時間で」という考え方でシステムを設計することをお勧めしますこれとともに"。
回答:
あなたのデザインはとして密接に彼らができるように、クライアントのニーズを満たす必要があります。デザインには次のような小さなものが含まれていることに注意してください。
これらのことは、フレームワークによって決定されるべきではありません。これらの目標を達成するためにフレームワークと戦うことが明らかな場合は、コードを書き始める前にそれらの目標を達成するのに役立つ新しいフレームワークを選択します。
適切なツールセットを選択したら(フレームワークはツールです)、使用するように設計された方法でツールを使用することをお勧めします。フレームワークの設計から逸脱するほど、チームの学習曲線が大きくなり、何かがうまくいかなくなる可能性が高くなります。
要するに
さらなる考え:
20年以上にわたるソフトウェアエンジニアリングと、いくつかのフレームワークの使用の後、いくつかの教訓を学びました。すべてのフレームワークは両刃の剣であり、制約と有効化の両方を行います。上記の大きな3を見る前にフレームワークを決定する際の問題は、平凡な(せいぜい)1つのユーザーエクスペリエンスを損なう可能性があることです。あるいは、特定の機能を実現するために、フレームワークの設計から逸脱することを余儀なくされる場合があります。
フレームワークは、特定のモジュールとサブシステム(GUIフロントエンドなど)の設計に自然に影響します。他の回答で述べたように、自分が選択したフレームワークと戦っているのに気づいた場合、あなたは苦労するでしょう。
ただし、より広範には、単一のフレームワークまたはテクノロジがシステムアーキテクチャ全体の「全体像」を決定または駆動することを避ける必要があります。ほとんどの汎用アプリケーションフレームワークはこれを奨励していません。そのため、1つのフレームワークを中心にシステム全体を記述していることに気付いた場合、そのフレームワークの作成者が意図しないことをしている可能性があります。
多くの場合、さまざまなフレームワークを使用してさまざまな問題を解決します。システムがより複雑になると、泥の大玉を作らないように注意する必要があります。可能な場合は、システムをモジュール化して疎結合にしてください。一部のフレームワークは、他のコンポーネントからフレームワーク固有のワークフローを「隠す」ラッパーとアダプターを作成することにより、抽象化の背後に保持される場合があります。GUIツールキットはフロントエンドGUI機能のみを提供する傾向があるため、これらのGUIモジュールはシステムの他の部分から離しておく必要があります。
システムの完全なアーキテクチャを規定する汎用フレームワーク(UIフレームワーク、データレイヤーフレームワークなど)は存在しません。せいぜいコンポーネントまたはモジュールの設計を規定するだけです。たとえば、一部のGUIテクノロジーは特定のMV *パターンを対象としています。
システムの全体的なアーキテクチャは、主にビジネス要件によって決定される必要があります。すべてを結び付けるために特定のツール(メッセージングミドルウェアツール、ORMフレームワークなど)に大きく依存していることがありますが、「サービス」クラスなどの抽象化でフレームワークをカプセル化している場合は、その制限に直面したときに、そのフレームワークに制約されていることに気付く可能性は低くなります。
全体像の設計では、次のことに留意してください。
はい、できる限りフレームワークが「伝える」ことに固執する必要があります。
その理由は、単純にフレームワークの「考え方」に固執するほど、そのフレームワークを使用している問題やアイデアについて他の開発者と話しやすくなるからです。
後で使用する他の人との相互運用性と使いやすさが向上し、使用しているものの根底にある哲学に固執すれば、チュートリアルや一般的なソリューションをよりよく理解して組み込むことができます。
フレームワークを「壊す」理由を考えることができる唯一の正当な理由は、「デフォルト」の構成/原則の適用を考えれば、提供できないものが絶対に必要だからです。しかし、その後、それは最初から正しいフレームワークではないかもしれません。
基本的に、これは他の決定にも適用できます。他の人と同じ言語を話せば物事が簡単になるので、使用する言語を使用するつもりの言語にできるだけ近づけて使用する必要があります。