これは一部の観察、一部の質問です。
最初の観察:
誰もがモジュラープログラミング、OOP、手続き型、アスペクト指向、デザインパターンなどについて話しますが、いくつかの人気のあるオープンソースPHPアプリは、includes
とによって制御される構造を持つプレーンスクリプトファイルですrequires
。
私が共有ウェブホストで最近の問題に直面するまで、これは私にはばかげているように見えました-彼らは共有ホスティングでMySQLストアドプロシージャをサポートしていません。私は多くの競合する共有ホスティングパッケージをチェックしました-同じ話。
次に、SQLクエリとDB処理クラスのいくつかの静的関数を使用してコードを書き直しました。その時、私は、前述のPHPプロジェクトが実際にWebホスティングパッケージの全範囲を考慮に入れていること
に気づき、より広いユーザーベースに到達するためにコードを可能な限り馬鹿にすることにしました。
もう1つは、正式なSoftware Enggのバックグラウンドがなくても、初心者がスクリプトを利用できることです。スクリプトは、初心者にとってはハッキングしやすいものです。
これらの2つは、私が現象を説明するために見た正当な理由でした。
間違いなく、これらのプロジェクトを管理している人たちはソフトウェア開発がかなり得意なので、無能ではありません。
時々彼らは予備の現金も持っています。
さて、質問:他にどのような賢明な理由が考えられますか?
編集:他の人が指摘しているように、私は個人的にそれはOOPだけではないと感じています。良いコード構造は、OOP/手続き型のスタイルに依存していません。私はいくつかの関数ベースのPHPプロジェクトを自分で見てコーディングしました。
私が最も気になるのは、フォルダー/ファイルシステムのレイアウトが優れていること、ファイル/フォルダーの命名が優れていること、ドキュメントが豊富であること、標準に準拠していることですが、ファイルを開いてコードを読み取ると、100個のif-thenがあります。 -その他の条件、バージョンチェック、あちこちでの出力バッファリングの奇妙な使用、Cookie操作コード、いくつかの定数、インクルード、および多くのファイルに明確な構造がありません。
少なくとも、コードを読もうとするたびに迷子になっているようです。しかし、JavaやC#コードベース、またはその他のサイドライン化されたPHPアプリからコードを読み取る場合、関数内でコードが適切に分離され、表示などにテンプレートが使用されます。整理されているように見えます。わかりやすいように見えます。
下位互換性はメンテナにとって問題になる可能性がありますが、より構造化された方法で次のバージョンを作成する可能性があります。しかし、それも起こりません!
結局のところ、それらのメンテナは常に一生懸命働いているので、明らかに私は何かが欠けています。