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行代码。
方案二:文件30行代码,每个include文件250-350行代码之间。选项3:文件为650行代码。它较少,因为某些代码可以在所有三种帐户类型之间“共享”。

哪个选项是最快/“最佳实践”?我倾向于选项 3,因为整体文件大小会更小,但是使用此选项有更多的条件语句(选项 1 和 2 只有三个条件语句,而选项 3 例如有 40 个)。有这么多的条件语句会使文件处理速度变慢吗?选项 1 和选项 2 之间实际上有什么区别(将代码块分成包含文件是否意味着它只会为每种帐户类型加载一个包含文件?还是 php 加载所有三个文件并只选择正确的一个?)?

谢谢你的帮助!

4

3 回答 3

1

就效率而言,选项 3 将是最慢的,因为它的条件检查比其他任何方式都多 - 但是,速度将非常(非常)可以忽略不计。

定义“最佳实践”是不可能的——它实际上归结为“什么对你的工作人员来说最容易维护”。如果,在路上,你必须对代码进行大量更改,但只是为了$accountType == "type2",你想通过大量的意大利面条代码(选项 3),还是更多的分块(选项 1),或者只需打开该类型的特定文件(选项 2)?

在我个人看来,即使不使用 OOP/MVC 框架实践,我也会推荐选项 2。如果您需要更新任何内容,将每个单独的类型拆分为自己的单独文件将为您省去很多麻烦。您甚至可以合并某些部分 - 例如,如果所有三种类型都有一个具有相同外观和感觉的“块”,您可以在它自己的包含中定义它并将其包含在所有三种类型的文件中。

于 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 回答