私はほとんどの場合、Webアプリケーションを使用する傾向があり、一般的にしようとしても、私の答えはプログラミングの分野には当てはまらないかもしれません。
また、「ライブラリ」と同義の「フレームワーク」を使用します。
フレームワークを実装する前に、いくつかのことを考慮する必要があります。ここにいくつかの一般的な例を示します。
#1。フレームワークは時間と労力を節約しますか?
この質問に対する答えはほとんど常にあるそう。フレームワークは特定の問題を解決するために構築される傾向があり、それらを非常にうまく解決します。たとえば、EntityFrameworkなどのフレームワークを使用すると、SQLコードを記述する必要がまったくなくなります。プログラミングチームがSQLに堪能でなければ、これは素晴らしいことです。
フレームワークは、a)複雑なコンポーネントにプログラマ向けのインターフェイスを追加するか、b)既知の(または確立された)コンポーネントに抽象化を追加するために構築されます。
後者(または場合によっては前者)は、実際に開発の邪魔になります。これは、特にあなたまたはあなたのプログラミングチームが新しいフレームワークを実装する場合に当てはまります。
これにより、開発プロセスが遅くなり、コストがかかる可能性があります。
#2アプリケーションの規模
「やりがいのあることはやりすぎの価値がある」と言われていますが、通常はそうではありません。アプリケーションのポイントが"potato"を印刷することである場合、超大規模なフレームワークを実装する正当な理由はおそらくないでしょう。
アプリケーションを開発するとき(Web、デスクトップ、モバイル、または他の考えられるタイプのアプリケーション)-フレームワークのサイズが(おそらく将来の)実装を「小さくする」と感じるなら、これは大きいかもしれませんフレームワークがアプリケーションを肥大化させる可能性があるという警告サイン。ドキュメントの準備ができたときにbodyタグに「ロードされた」クラスを追加するだけで、jQueryを含めた場合の良い逸話になります。ネイティブJavaScriptだけでそれを行うのは少し難しいかもしれませんが、アプリケーションを肥大化しません。
一方、フレームワークが内部で多くの汚い作業を行っている場合(データベースフレームワークなど)、フレームワークを「部分的に」使用している場合でも、実装することが可能です。良い逸話は、ライブラリ全体を利用する必要がないという理由だけで、独自のADO.NETまたはMongoDB-driverを構築しようとしないことです。
フレームワークはオープンソースで提供される場合があります(「やりたい放題」ライセンスが付いています)。これにより、プログラミングチームがフレームワークの一部のみを選択する可能性が新たに広がります。
これは最終的に質問#1と#3に結びついています。
#3インパクト。
フレームワークを実装すると、エンドユーザーに直接影響する場合があります。これは、Webアプリケーションの場合に特に当てはまります。なぜなら、大きなクライアント側のフレームワークがあると、エンドユーザーのエクスペリエンスに悪影響を及ぼす可能性があるからです。速度の遅いマシンを使用しているユーザーは、レンダリングが遅い、javascriptのパフォーマンスの問題、または標準以下のマシンに起因する同様の問題が発生する可能性があります。接続が遅いユーザーは、(少なくとも最初の)読み込み時間が遅くなる可能性があります。
他のタイプのアプリケーションでも、エンドユーザーはアプリケーションの依存関係によって悪影響を受ける可能性があります。フレームワークは、少なくとも常に取り、いくつかのディスクスペースを、そしてあなたがモバイルアプリ(あるいはデスクトップアプリケーション)を開発している場合、これは考慮に入れなければ必要になる場合があります。
サーバー側のフレームワーク(さらにWeb固有)は、エンドユーザーにはほとんど影響しませんが、インフラストラクチャには影響します。一部のフレームワークには依存関係があるため、Webサーバーを再起動する必要があります。サービスのみまたはサーバー全体を再起動する必要があります。
一部のフレームワークは、リソースを非常に多く使用する場合もあります。
もちろん、これはポイント#1と#2に結びついています。
それはすべて大きな「考察の輪」であり、フレームワークを実装すべきかどうかを決定するための実際の科学的方法はありません。
コービンマーチはそれを非常によく要約しました。
私が協力したグループはすべて同じことをします-コストと利益を推測し、最も生産的なルートを選択し、それらが正しいことを望みます。それはひどく科学的ではありません-1つの部分の直観、3つの部分の経験、1つの部分のマーケティングへの感受性、1つの部分のunning、そして5つの部分のランク意見。
エリートではないことも重要です。フレームワークは、使用するためのツールです。私は両方の極端な人々を知っています。一方には、自分のために非常に苦労している人がいます。他方には、遅くて肥大化したアプリケーションを構築する人がいます。
すべてのフレームワークにはユースケースがあり、それは正しい目的のためにそれらを実装するだけの問題です。