IF声明:什么更有效?许多小的,或几个大的?

时间:2011-10-28 06:58:58

标签: php mysql forms refactoring premature-optimization

我有我的食谱应用程序的表单,将成分插入数据库。如果尚未提交任何内容,则营养值显示为“0”。否则他们会更新到帖子值。

我的营养展示结构是:

Calories:
  <?php if ($ingredientArray[calorieKey] >= 1)
  echo $ingredientArray[calorieKey];
    else echo 0; ?><br />
Protein:
  <?php if ($ingredientsArray[proteinKey] >= 1)
  echo $ingredientArray[proteinKey];
    else echo 0; ?><br />

...并继续约20项。问题是:

使用1 if / else语句重构代码以显示2种不同的形式(动态和静态)会更有效吗,还是更好?

4 个答案:

答案 0 :(得分:4)

这里的效率根本不重要。除非您有数百万个这些重复的if语句,否则处理时间实际上为零,与导致页面加载时间的所有其他因素相比(例如从数据库中获取数据,将输出发送到客户端,和客户端在浏览器中呈现它等。)

因此,您应该专注于使代码尽可能易读和可维护。

有些时候你应该牺牲可读性以获得更好的性能......但是直到你真正遇到性能问题,你仍然远离那一点。

答案 1 :(得分:2)

你需要的只是一个循环;

$recipes = array('caloriesKey' => 'Calories', 'proteinKey' => 'Protein');
foreach($recipes as $key => $value) {
    echo $value . ($ingredientArray[$key] >= 1 ? $ingredientArray[$key] : 0) . '<br />';
}

答案 2 :(得分:1)

<?php echo $ingredientArray[calorieKey] >= 1 ? $ingredientArray[calorieKey] : 0 ?>

看起来更好。

不要担心它,并照顾代码纯度。

答案 3 :(得分:0)

创建另一个变量的代码块怎么样,让我们​​称之为$displayArray,它将保存您想要打印的实际值?

然后,您可以在构建视图时循环浏览$displayArray

这可能看起来不是一个很大的区别,但它可以更容易地弄清楚下一个人正在发生什么,它可以让你改变,甚至换掉你显示同一组信息的方式更容易。