0

各ページの異なるバージョンに異なるアカウント タイプが表示されるサイトを作成しています。私はそれを機能させていますが、私の質問は速度/「ベストプラクティス」に関するものです。これを行うための最良の方法は、次のうちどれ (またはまったく異なるもの) ですか?

オプション 1. 各アカウント タイプをファイルの個々のセクションに分割します。

if($accountType == "type1"){
  //All lines of code for the account type1 page
}
elseif($accountType == "type2"){
  //All lines of code for the account type2 page
}
elseif($accountType == "type3"){
  //All lines of code for the account type3 page
}

オプション 2. インクルード ファイルを使用して、各アカウント タイプをファイルのセクションに分割します。

if($accountType == "type1"){
  //this file has all of the code for account type1 page
  require('includes/accounts/type1/file.php');
}
elseif($accountType == "type2"){
  //this file has all of the code for account type1 page
  require('includes/accounts/type2/file.php');
}
elseif($accountType == "type3"){
  //this file has all of the code for account type1 page
  require('includes/accounts/type3/file.php');
}

オプション 3. ファイル全体で多くの条件ステートメントを使用して、アカウントの種類ごとにページを生成します。

if($accountType == "type1"){
  $result = mysql_query("//sql statement for account type1");
}
elseif($accountType == "type2"){
  $reslut = mysql_query("//sql statement for account type2");
}
elseif($accountType == "type3"){
  $result = mysql_query("//sql statement for account type3");
}
while ($row = mysql_fetch_array($result)) {
  $variable1 = $row['variable1'];
  if($accountType == "type1"){
    $variable2 = $row['type1Variable2'];
    $variable3 = $row['type1Variable3'];
  }
  elseif($accountType == "type2"){
    $variable2 = $row['type2Variable2'];
  }
  elseif($accountType == "type3"){
    $variable2 = $row['type3Variable2'];
  }
  $variable4 = $row['Variable4'];
}
echo "The variables echoed out are $variable1, $variable2";
if($accountType == "type1"){
  echo ", $variable3";
}
echo "and $variable4";
//the rest of the file to follow in the same way

基本的には次のようになります。

オプション 1: ファイルは 1000 行のコードです。
オプション 2: ファイルは 30 行のコードで、各インクルード ファイルは 250 ~ 350 行のコードです。オプション 3: ファイルは 650 行のコードです。一部のコードは 3 つのアカウント タイプすべてで「共有」できるため、それは少なくなります。

どのオプションが最速/「ベストプラクティス」になりますか? 全体的なファイル サイズが小さくなるため、オプション 3 に傾いていますが、このオプションにはさらに多くの条件ステートメントがあります (オプション 1 と 2 には 3 つの条件ステートメントしかありませんが、オプション 3 にはたとえば 40 があります)。これだけ多くの条件ステートメントを使用すると、ファイルの処理が遅くなりますか? オプション 1 とオプション 2 の間に実際に違いはありますか (コードのブロックをインクルード ファイルに分割することは、アカウントの種類ごとに 1 つのインクルード ファイルのみを読み込むことを意味しますか? それとも、php は 3 つのファイルすべてを読み込み、適切なファイルを選択するだけですか?)

ご協力いただきありがとうございます!

4

3 に答える 3

1

効率の点では、オプション3は他のどの条件よりも条件付きチェックが多いため、最も遅くなりますが、速度は非常に(非常に)無視できます。

「ベストプラクティス」を定義することは不可能です。それは、実際には「あなたあなたが一緒に仕事をする人にとって、維持するのが最も簡単なもの」に帰着します。将来、コードに大規模な変更を加える必要があるが、それだけの場合は、大量$accountType == "type2"のスパゲッティコード(オプション3)、またはもう少しブロックに分けられたコード(オプション1)を実行しますか、またはそのタイプの特定のファイルを開くだけですか(オプション2)?

私の個人的な意見では、OOP / MVCフレームワークの手法を使用しなくても、オプション2をお勧めします。個々のタイプを個別のファイルに分割すると、将来、何かを更新する必要がある場合に多くの頭痛の種を減らすことができます。特定の部分をマージすることもできます。たとえば、3つのタイプすべてに同じルックアンドフィールを持つ1つの「ブロック」がある場合、それを独自のインクルードに定義し、3つのタイプすべてのファイルに含めることができます。

于 2012-09-27T13:03:35.180 に答える
0

バージョン 1 を窓から放り投げてください。エラーに対して非常に敏感で、メガファイルはあまり便利ではありません。

私自身、オプション 2 を使用しますが、コードの少ない部分と関係があるかどうかはわかりません。データが混同しないように、用語ごとに個別のファイルを作成する方が簡単であることがわかりました。その次に、変更が簡単です。バージョン 3 は、気をつけないとデータを処理する機密性が高く、私はそれを避けようとしました。したがって、私は個人的には、自分の作業バージョン 2 で選択し、引き続き選択します。

于 2012-09-27T13:04:55.623 に答える
0

パフォーマンスに関しては、どのオプションにも大きな違いはありません。

ベスト プラクティスについては、オプション 2 を選択することをお勧めします。これは、各タイプのユーザーに関することを個別に独自の範囲内に保つことができるため、最も保守しやすいと思います。

ページ間でコードを再利用したい場合でも、カプセル化できる共有コードのコントロールを作成できます。

オプション 1 は、変更したいときに何かを見つけるのが難しい巨大なファイルを持っているように聞こえます。また、他のアカウントの種類のものを変更しないように注意する必要があります。

オプション 3 は最悪です。なぜなら、ひどいスパゲッティ コードを取得し、各アカウント タイプに何が表示されるかを調べるには、すべてのコードを調べなければならないからです。

于 2012-09-27T13:06:41.457 に答える