PHP開発者向けの30の悪いヒント

わざわざわざわざ明らかな事実を描いたわけではありませんが、コードで私を怖がらせるポイントの大部分をここで概説します。 リストを特に簡潔にすることでリストを読む必要がないようにしましたが、できるだけ明確にすることで、初心者でもこれができないことを理解しています。 一般的に、以下は私が日常生活で遭遇することに基づいた悪いアドバイスのリストです。







では行きましょう:



  1. レイアウトをPHPスクリプトで直接記述し、エコーのみで出力するようにしてください(何らかの理由で、この言語構​​成が必要です)。



  2. プロジェクトで可能な限り多くのエコーを使用するようにしてください。それはあなたから遠く離れたクールな言語開発者によって考案されたことを忘れないでください。



  3. 必要な各ファイルのデータベースに接続するためのパラメーターを書き留め、どこにどの構成が登録されているかに関する情報を保存しないでください。他のすべてをあなたのレベルまで発展させてください。



  4. プロジェクトのさまざまな部分でできるだけ多くのデータベース接続を作成します。それらの多くは同時に呼び出されることが望ましく、通常は機能を開始するたびに新しいデータベース接続を作成します。



  5. 標準の言語機能を使用しないでください-独自の言語機能を作成してください。100倍、正確に機能します。



  6. 必要な機能が1つだけの場合でも、プロジェクト内のすべてのプロジェクトファイルを接続します。



  7. GLOBALS配列を使用します-配列なしで、言語開発者はあなたの便宜のためにそれを思いつきましたが、サーバーの終了の問題は言語ではなくサーバーの問題です。



  8. 関数を呼び出し、レイアウトでループを直接使用します。これは情報出力であり、関数はありません。



  9. mysqlパラメーターを使用しないでください。余分なプロセッサー時間を無駄にしないために、変数$ _GET、$ _POSTを要求に直接書き込みます。これは非常に重要です。



  10. 必要になるたびに同じメソッドをすべてのクラスで複製します。継承は過去の遺物であることを忘れてください。



  11. 静的なメソッドとプロパティのみを使用し、オブジェクトを作成する必要はありません。このためにクラスは考案されていません。



  12. データベースで動作するクラスのメソッドはRESOURCEを返す必要があります。他の方法では、クラスからデータを受信するたびに使用することをお勧めします。



  13. ループでSQLクエリを作成するようにしてください。これは非常に重要です。そうでなければ、テーブルからすべてのレコードを取得するにはどうすればよいですか?



  14. datetimeフィールドには独自の奇妙な形式があるため、varchar型のフィールドに日付と時刻を保存します。



  15. テーブルに自分用のフィールドを作成します。各レコードに対して、レコードのすべての変更を<br />で追加します。必ず追加してください。 個別のログテーブルを作成しないでください。ディスク上に追加のファイルが必要なのはなぜですか。



  16. データベーステーブルに多くのセルを作成しないでください。seializeを使用し、保存するときにエンコードを忘れてください。unserializeが毎回エラーを生成する場合は無視してください。



  17. 通常、プロジェクト内のすべてのエラーを無視し、error_reportingをオフにします。干渉するだけで、オタクにならないでください。



  18. 絶対に、聞いて、変数の存在をチェックせず、ポイント17の後、テンプレートに直接出力するだけで、通知はもはや問題ではありません。



  19. for($i=0; $i<count($arr); $i++)



    のみfor($i=0; $i<count($arr); $i++)



    書き込みfor($i=0; $i<count($arr); $i++)



    これは、各反復で配列内の要素の数をカウントするのが適切であり、ポストインクリメントがはるかに高速に動作し、反対の人が知らないためですそれが言うこと。 また、高速であるため、最初に大きな配列をソートする必要があります。



  20. どの形式でも解析を使用しないでください。これは非常に悪いことです。特に、DomDocumentを使用するとプロジェクトが遅くなり、学習する必要があるので、レイアウトとともにページ全体をダウンロードしてデータベースに保存することをお勧めします。時間がない-プロジェクトを書く必要があります。



  21. ユーザーに関するすべての情報を1つのテーブルに保持します-承認のためのデータ、個人データ、自宅の住所と電話番号、職場。ただし、通常はすべての情報を1つのテーブルに保持し、シリアル化を忘れないでください



  22. データベースでインデックスとキー、特にテーブル間の接続を使用しないでください。これは非常に悪いことです。



  23. 参照テーブルを使用しないでください。特に、列に頻繁に繰り返される大きなデータが含まれる場合は、1つの列にすべてを複製することをお勧めします。



  24. 関数とメソッドの命名の標準について聞いたことがありますか? 忘れて! 関数の名前には何らかのロジックが必要だと考えたことがあり、名前がa()、b()、aa()の関数の呼び出しははるかに短いです。



  25. プログラマーが怠けすぎて関数が何をするのか読むことができない場合、可能な限り関数を実行します-彼は悪いプログラマーです。



  26. truプログラマーはコメントを必要としないので、どこにもコメントを書かないでください。最悪の場合、/ * this a()関数のようなコメントを書くことができます。愚かな変数には2つの変数$ aと$ b * /が必要です。



  27. プログラマにソースコードを強制的に読み取らせるために、関数はできるだけ多くのパラメータを取り、それらに対してさまざまなアクションを実行し、常に予期しない結果を返す必要があります。



  28. 他のクラスの関数を書き換えるために、継承を使用しないことを既に決定しているため、クラスを少なくとも1000行にする必要があるという事実でこれを補足する必要があります。



  29. 本当に大きなクラスを取得するには、各ブラケットの行全体を選択する必要があります。念のため、多くのクラスプロパティを作成する必要があります。また、標準のphp関数を使用できない場合もあります。



  30. 最後に、日付に応じて(そして突然)アクションが変わるスクリプトが必要だとしましょう。この日付をスクリプトに直接書き込んで、毎回手で入力して修正し、常にスクリプトを制御できるようにしてください。


ご清聴ありがとうございました!



UPD

この出版物は突然マイナスの評価を得ましたが、その中に記載されているものはすべて実際のコードから取られています。

コメントへの返信:

lavkasnovおよびこのトピックに触れた他の人々から

それがまさにPSRがお勧めすることです。


もちろん、ただしサイクルや条件がある場合はそうではありません。 PSR-2 5.1-5.6を参照



CentALTから

親愛なる専門家、レイアウトを正しく作成して、1や2のようにうまくいかないようにする方法を教えてください。


エコーを使用せずに突然接続できる別のテンプレートファイルを作成する



一般に、エコーなしでテンプレートに情報を表示する方法はたくさんあります

たとえば、私はそのような目的でDOMを使用します。

つまり 擬似変数が配置されたきれいなhtmlテンプレートがあり、テンプレートエンジンはテンプレートをフックし、変数の値の数を知り、必要なレイアウト要素を必要な回数だけ解析し、saveHTMLを通して結果を表示します。 その結果、レイアウトのみのクリーンなテンプレート、レイアウトのないクリーンなスクリプト、数百ページとハッピーコーダーとタイプセッターで構成されるプロジェクト全体のエコーが1つだけになります。どちらも誰かがプロジェクトを落とすことを恐れないからです。またはカバーレイアウト。 詳細については、古き良きxTemplateをご覧になることをお勧めします(ただし、現在では一般的に完全なコード分離を備えたより強力なアナログがあります)



gmaxから

prodがE_NOTICEをオフにしました

display_errors自体


もちろん、その後、存在しない変数をテンプレートに直接安全に挿入することができ、Notice、なぜ存在チェックや空のチェックを考え出したのか、コードを複雑にするだけの不必要な情報に惑わされることはありません。



All Articles