10

2 つの mysql データベース呼び出しを実行する PHP ファイルを作成しています。残りのスクリプトは、file_exists やその他の単純な変数などの if ステートメントです。これまでのところ、このファイルには約 2000 行のコードがあります。

ステートメントが true の場合、別のファイルを含めることをお勧めします。または、if ステートメント自体にコードを直接入力するだけですか?

PHPで遵守する必要がある単一ファイルのコードの最大行数はありますか?

4

8 に答える 8

11

PHP ファイルの行数に関連するパフォーマンスの問題はありません。必要なだけ大きくすることができます。

さて、パターンとベスト プラクティスについては、ご自分で判断する必要があると思います。数千行のよく整理されたファイルと、実際には小さくて読みにくいファイルがたくさんあるのを見ました。私のアドバイスは次のとおりです。

  • ソースコードの可読性を判断し、常によく整理してください。
  • ファイルが両方を行う場合、ある程度論理的に分離することが重要です: 重いデータベース アクセス、書き込み、変更、html レンダリング、ajax など..物事を分離するか、オブジェクト指向アプローチを使用することができます。
  • 論理的な分離とコードの間のバランスを常に探します。10行のファイルがたくさんあるので、乱雑でもきれいでもありません
于 2009-12-28T02:44:09.860 に答える
3

1 つのファイルに 2000 行のコードがあることは、コンピューターの観点からは必ずしも悪いことではありませんが、ほとんどの状況ではおそらく回避可能です。MVC 設計パターンを調べてください。コードをより適切に整理するのに役立ちます。

また、(多数の) ファイルを含めると、コードの実行が遅くなることにも注意してください。

于 2009-12-28T02:39:14.623 に答える
2

Bob Martin の Clean Codeのような本を読みたいと思うかもしれません。その本のいくつかのナゲットを次に示します。

  • クラスには 1 つの責任が必要です
  • 関数は 1 つのことを適切に実行する必要があります

クラス アプローチを使用していない場合は、PHP を使用します。重複の問題が発生します。あなた自身に好意を持って、この主題について読んでください。拡張とメンテナンスの時間を大幅に節約できます。

于 2009-12-28T02:42:58.500 に答える
2

行数はパフォーマンスの良い指標ではありません。コードが効率的に編成され、論理クラスまたはブロックに分割されていることを確認し、無関係なコードを単一のモジュールに結合しないようにしてください。

PHP のような言語の問題の 1 つは、いくつかの創造的なキャッシュを除いて、含まれているすべてのファイルのすべての行をトークン化し、解析ツリーを介して圧縮し、ホスト ページが要求されるたびに意味のある命令に変換しなければならないことです。.NET や Java などのコンパイル済みプラットフォームは、このパフォーマンス キラーの影響を受けません。

また、他の投稿者の 1 人が、ファイルを短く保つ方法として MVC について言及していたため、優れたコード構成は経験と常識の機能であり、特定のパターンやアーキテクチャに縛られることは決してありません。MVC は興味深いものですが、この問題の解決にはなりません。

于 2009-12-28T02:44:36.967 に答える
1

行数にこだわる必要はありますか?いいえ、必ずしもそうではありません。コードが整理され、効率的で、不必要に冗長でないことを確認してください。

于 2009-12-28T02:38:00.367 に答える
0

コードを適切に文書化し、可能な限りモジュール化し、非効率性をチェックしている限り、それは問題ではありません。10,000行のファイルがあるかもしれません。私は通常、アプリケーションのセクションごとに約 500 ~ 1000 で分割します。

于 2009-12-28T02:42:44.117 に答える
0

それほど単純なコードを分割する便利な方法はわかりません。特に、すべてが意味的に一緒に属している場合はそうです。

リファクタリングでコードの一部を削除できるかどうかを考えると、おそらくもっと興味深いでしょう。たとえば、変数がわずかに異なる特定のチェックの組み合わせを頻繁に使用する場合、チェックの組み合わせを関数に外部委託し、適切な場所で呼び出すことが役立つ場合があります。
大部分はうまく書かれているプロジェクトを見たことがありますが、そのような問題がありました。たとえば、構成ファイルを解析するためのコードは次のように複製されました。

if (file_exists("configfile")) {
  /* tons of code here */
} else if (file_exists("/etc/configfile")) {
  /* almost the same code again */
}

極端な例ですが、お分かりいただけたでしょうか。

于 2009-12-28T20:04:52.747 に答える
0

2k 行は私には多すぎるように聞こえます... 従うコード スタイルによって異なりますが、たとえば、多くの改行、多くの小さな関数、または適切な API コントラクト コメントは、良い習慣ですが、サイズを大きくすることができます。また、コードの書式を適切に設定すると、行数が増える可能性があります。

PHP に関しては、知っておくとよいでしょう: 1 つのクラスだけで 2,000 行ですか、それとも OOP 以外の PHP コードを含む 1 つの大きなインクルードだけですか? テンプレートステートメントとプログラムロジックが混在していますか(PHPコードでよく見られるように)?

通常、分割するときにこれらの行を数えません。彼らはただ習慣になりました。コードが混乱した場合は、対応してリファクタリングします。チームとして最近書いたいくつかのコードをまだ調べていると、いくつかのパターンが見られます。

  • サイズが 20LOC (コメントなし) より大きい場合は関数/メソッドを抽出し、if/else 句を使用する
  • サイズが 200 ~ 300LOC を超える場合は、別のクラスに抽出します
  • アーティファクトが 10 を超える場合は、別のパッケージ/フォルダーに抽出します

それでも、私が持っているコードの種類によって異なります。たとえば、ロジックの負荷が関係している場合 (if/else/switch/for)、関数ごとの LOC が減少します。関連するロジックがほとんどない場合 (単純で愚かなワンパス コード ステートメント)、制限が増えます。最後に、最も重要なルールは次のとおりです。人間はコードを理解するでしょうか。彼女/彼はそれをよく読むことができるでしょうか。

于 2009-12-28T19:54:25.193 に答える