【发布时间】:2010-07-31 14:57:58
【问题描述】:
这两个例子中哪一个表现更好:
示例 1:
if($condition_1)
{
if($condition_2)
{
// do something
}
}
示例 2:
if($condition_1 and $condition_2)
{
// do something
}
【问题讨论】:
标签: php performance
这两个例子中哪一个表现更好:
示例 1:
if($condition_1)
{
if($condition_2)
{
// do something
}
}
示例 2:
if($condition_1 and $condition_2)
{
// do something
}
【问题讨论】:
标签: php performance
差异(如果有的话)可以忽略不计。由于short-circuit evaluation
,您不必担心第二个评估这两个条件IMO 第二种形式使代码更具可读性。我讨厌看到一百万个缩进。
【讨论】:
这是过早进行微优化的严重案例。即使存在差异,它也是微不足道的,甚至不存在——这不是哪个性能更好的问题,而是哪个更易读的问题。这将取决于具体情况。但是,脱离上下文,我会说第二种选择更可取:“if”语句意味着“else”,即使它不存在,并且两个“ifs”会误导读者。
【讨论】:
如果有的话,差别可以忽略不计。我在后面的方法中看到简洁。
【讨论】:
嵌套控制结构将有更多Cyclomatic Complexity。比较嵌套的 if 块构造
Lines of Code (LOC): 6
Cyclomatic Complexity / Lines of Code: 0.40
Comment Lines of Code (CLOC): 1
Non-Comment Lines of Code (NCLOC): 5
与复合 if 块结构
Lines of Code (LOC): 9
Cyclomatic Complexity / Lines of Code: 0.25
Comment Lines of Code (CLOC): 1
Non-Comment Lines of Code (NCLOC): 8
请注意,数字因代码布局方式而异。将嵌套结构写在一行上会使 CC 增加到 0.67。一般来说,您要避免将控制流嵌套得太深,因为它会变得更难维护。
因此,如果它不利于可读性,请使用组合比较。
编辑:如果您想知道为什么它是 9 个和 6 个 LOC:因为我在用于分析的文件中添加了 <?php 和空行
【讨论】:
【讨论】:
如果它只是一个块,请使用后一个选项,因为它需要更少的缩进,更短,并且可以说更具可读性。
但是,请注意,从那时起,您将使用第一个的变体,因为您将添加 elses。这些显然不一样:
if ($condition_1) {
if ($condition_2) {
// do something
}
else {
//do something else
}
}
if ($condition_1) {
if ($condition_2) {
// do something
}
}
else {
//do something else
}
【讨论】: