私は1年弱のプログラミングを行っており、企業/組織向けのシステムアプリケーション、Webアプリ、およびスクリプトの記述経験があります。ただし、Django、Rails、Zendなどのフレームワークを使用することは、私が実際にやったことがありません。
Djangoフレームワークを見ると、フレームワークでどれだけ抽象化されているかに少しイライラしています。私はDRYと最小限のコードの中核的な目標を理解していますが、さまざまなモジュールへの過度の依存とコア機能の重い抽象化の一部は次のように感じます。
モジュール/フレームワークの絶えず変化する性質のため、プログラムの日付を非常に速くします。
多数のフレームワークとモジュールが利用可能であり、すべての特異性があるため、コードを理解しにくくします。
すべてのドキュメントを読んでいない限り、コードを論理的にしません。つまり、リストの内包表記と条件付きロジックを読んでプログラムの動作を理解することができますが、任意の文字列と辞書を渡す必要がある関数を見ると、すでに第一人者でない限り、物事を理解するのは少し難しくなります指定されたモジュール。そして:
フレームワークを切り替えるのが難しく、面倒です。言語の切り替えはすでに課題ですが、その中核となる機能/哲学を十分に理解している場合は管理しやすくなります。フレームワーク間の切り替えは、暗記の問題であるように思われます。これは、いくつかの点で、これらのフレームワークが排除するように設計された非常に非効率性を助長するようです。
MySQLクエリのような単純なものの上に50層の抽象化を実際に配置する必要がありますか?準備されたステートメント/入力テストは処理されますが、普遍的に理解可能なSQLクエリは依然として関数の一部であるPHPのPDOインターフェイスのようなものを使用しないのはなぜですか?
これらの抽象化は本当に便利ですか?機能が肥大化することで無駄になり、フレームワークを使用せずに作成された同様のアプリケーションと比較して、アプリケーションが難しくなりませんか?
Do we really need to put like 50 layers of abstraction on top of something as simple as a MySQL query?
-第1に、優れたフレームワークは抽象化の1つのレイヤー(内部的に2または3)であり、第2に「MySQLクエリのような単純なもの」が実際に多数の抽象化を伴います。インタープリター言語から実行したクエリがデータベースサーバーに到達した後でも、物理ストレージ上のファイルシステム上のエンジン上のデータベースに対するクエリがあります。要するに、はい、抽象化が必要です。なぜなら、頭が爆発しないようにするためです。
as a relatively inexperienced programmer
-ソフトウェアを長くすればするほど、車輪の再発明に費やす時間を減らし、自宅で好きなことをする時間を増やすことに感謝します。