web-dev-qa-db-ja.com

Webフレームワークを使用することで得られるメリットとデメリットは?

この質問はWebベースのフレームワークを使用する利点と欠点を抽出するに焦点を合わせています:Cake PHP、Zend、jQuery、ASP.NETなど)。この質問は完全に言語にとらわれないです。 「巨人の肩の上に立つ」の概念から始めましょう。

利点:

  • Empowers Developers-以前は数百行のコードが必要だった機能を1つの単純な関数呼び出しに圧縮することにより、開発者はより複雑な機能をWebサイトに統合できます。
  • アプリケーションの迅速な開発を許可-これは、非常に小さなウィンドウで作成されたWebサイトを必要とする人々に非常に関連があります(この例はありますか?)
  • 低コスト-プログラマーがコスト削減を顧客に渡すことを可能にします。これは、以前は高額の開発コストを賄うことができなかった、まったく新しい範囲の顧客を生み出しました。

短所:

  • 失われた理解-フレームワークの機能に依存することにより、開発者は物事が(フードの下で)機能する方法についての理解を失う危険にさらされます。
  • 構成の崖-フレームワークの構成より先に進むと、生産性がすぐに低下し、フレームワーク構成の外部に機能を実装することが困難になる場合があります。
  • 開発者のトラムライン-あなた(開発者)は、開発者が望むことを実行する必要があります。

人々は私の意見をどのように解釈しているのでしょうか。また、他にもポイントがあればありがたいです。

16
JHarley1

これが一番下の行です:フレームワーク構成の外に機能を実装するのは難しい場合があります。

この仮定を前提にしていきましょう。

理解の喪失-フレームワークの機能に依存することにより、開発者は物事が(フードの下で)機能する方法についての理解を失う危険にさらされています。

いいえ。物事がどのように機能するかについての理解を失うことは決してないでしょう。フレームワークは魔法ではありません。これらは、自分で書く必要のない便利なコードです。

信じられないかもしれませんが、フレームワークを使用すると間違いを犯します。何が問題だったかを理解するには、HTTPの最低レベルまでデバッグする必要があります。

内部で何が起こっているかを見失うことは決してありません。もちろん、あなたのフレームワークが非常に壮大で完璧でない限り、問題はありません。

構成の崖-フレームワークの構成より先に進むと、生産性がすぐに低下し、フレームワーク構成の外部に機能を実装することが困難になる場合があります。

これはほとんど意味がありません。

最初。フレームワークなしで構築すると、単体テスト、デバッグ、診断、構成制御、およびフレームワークにあるものを再発明する他のすべての価値のない作業を含む大きなプログラミングタスクに簡単な仕事をすることができます。その「生産性」はどうですか?

二番目。フレームワークの外側に何かを実装することは常に大変な作業です。なぜなら、フレームワークの外側に何かを実装することは常に大変な作業だからです。フレームワークの学習と構成に費やされた時間とは関係ありません。フレームワークの外にあるものを実装することは本質的に困難です。

開発者のトラムライン-あなた(開発者)は、[フレームワーク]開発者があなたに望んでいる方法で物事を行わなければなりません。

正しい。そして、これはしばしば良いことです。一貫した方法で物事を行うことは、自分の個人的な好みの方法で行うよりも価値があります。 「学習」と「理解」が必要かもしれませんが、これらには価値があります。

セキュリティの問題-プロのようなWebサイトをすばやく開発するためのこれらのツールを人々に提供することは潜在的なリスクであり、人々は詐欺的な企業のためにプロのようなWebサイトをすばやく作成できます。

何?これはフレームワークとは関係ありません。詐欺は、使用するツールに関係なく詐欺です。

12
S.Lott

短所:サポートの最終的な可能性の低下/人気の喪失

  • 基本的に同じことを行う2つのWebフレームワークがあり、それがうまくいかない場合、プロジェクトが失敗する可能性があります。この状況では、フレームワークを自分で保守するか(オープンソース)、アプリケーションを書き直すか、更新を行わずに続行します(クローズドソース)。
  • フレームワークによっては、フレームワークのリリーススケジュールを使用してアプリケーションをアップグレードする必要がある場合があります。あまりに遅れると、サポートを受ける資格がなくなる可能性があります。フレームワークがなくても、スケジュールどおりに作業できます。 (これは、サポートが必要であるかどうかによって異なります)。

プロ:ビジネスのためのコード

  • フレームワークを使用すると、面倒な作業を心配する必要がなくなり、ビジネスに直接価値をもたらすコードに集中できます。
  • フレームワークのアップグレードにより、(機能するだけで)実質的に「無料」で新しい機能をユーザーに提供できる場合があります。特に、カスタムコントロールが付属するフレームワークでは(新しいバージョンが何らかの検索/フィルターを提供するグリッドのような)。
3
Ryan Hayes

メリット

  • 開発時間の短縮
  • バグが少ない
  • より迅速な共有開発
  • ライブラリサポート
  • 簡単なDB相互作用

短所

  • フレームワークへの「ボックス化」
  • コアの振る舞いを拡張または変更したい場合、柔軟性に欠けることが多い
  • 「Errors of Doom」–コアまたは基礎となるアーキテクチャーから発生したエラーで、発生元への適切なトレースバックがありません。完璧な例は、Grailsを使用する際のSpringエラーです。

私は、最も単純なプロジェクトを除くすべてのフレームワークを使用することを推奨しています。お問い合わせフォームを既存のHTMLサイトに追加する必要がある場合は、フレームワークに移動する代わりに、1つのPHPファイルを使用できます。

3
Josh K

頭に浮かぶいくつかのことは...

メリット

  • コードの再利用-フレームワークを使用することで、テスト済みで真のコードを再利用します。
  • 迅速な開発/プロトタイピング。
  • (多くの場合)安全であると推定できる統合された入力検証(開発者が正しく使用している場合)

短所

  • サポートの喪失。ここで頭に浮かぶのはSymfony 1.4です。 Symfonyはかなり長い間1.4をサポートすると思いますが、2.0は下位互換性がないことを知っているので、1.4は今後数年間でサポートの行き止まりのように見えます。
  • オーバーヘッド;フレームワークを使用することにより、特定のアプリケーションには当てはまらないが他のアプリケーションには当てはまる可能性がある数千行が実行されます。これは妥当なトレードオフであると考える人もいれば、パフォーマンスのために最初からコードを書くことを選ぶ人もいます。
  • 特定のニーズに合わせて間違ったフレームワークを使用する。すべてのフレームワークが同じように作成されるわけではありません。
2
Craige

それはすべて、使用するフレームワークに依存します。

ASP.NETを使用している場合は、デメリットがあります。これは、リークの多い抽象化せいぜいであり、せいぜいは、些細なことをするのが面倒ですあなたがウェブで作業しているという事実を隠さない他のフレームワークでは。

ASP.NET MVCはその問題を解決しようとしていますが、それはうまく機能しています。

フレームワークが存在するため、作業を完了するのにより多くの時間を費やすことができ、足場を構築する時間を短縮できます。その点では、足場の構築に本当に時間を費やしたいのでない限り、不利な点はありません。

1
George Stocker

いくつかポイントを追加したいと思います。

  • 私が見つけるフレームワークの最大の問題の1つは、人々が考えるのをやめることです。彼らはクールであるか、常にフレームワークを使用しているため、フレームワークを使用したいだけです。彼らは使用が正当化されるかどうかを考えるのをやめません。
  • ライセンス、人々は実際にライセンスを見ることなくフレームワークを使用しているように見えます。これは、彼らが気づいていないことを意味する可能性があります。または、ライセンスが変更されたときにどうなるかを考えてください。
  • 同じ種類のフレームワークのほとんどを使用する。時には、実際にはほとんど同じことを行う多くのフレームワークになることもあります。会社として、教育を受けた選択を行い、すべてのプロジェクトに異なるフレームワークを持っているわけではありません。
  • 新しいバージョンに追いつくのは難しいかもしれません

それでも、フレームワークの評価、ライセンスの評価、使用ごとのフレームワークの明確なリストの維持、およびスマートなバージョン管理戦略の導入にもう少し努力を払うことは、利点を検討する際に価値があります。

利点:

  • フレームワークを一貫して使用すると、すでにプロジェクトに取り組んでいる人にとって、プロジェクトの学習時間が短縮されます。
  • あなた自身のより速い開発
  • あなた自身の能力開発者
1
KeesDijk