【问题标题】:Evaluating a boolean variable in PHP: Should one use If/Else or Switch?在 PHP 中评估布尔变量:应该使用 If/Else 还是 Switch?
【发布时间】:2010-08-27 15:40:03
【问题描述】:

我喜欢让自己陷入这些我高估自己的编码实践的荒谬境地,所以就这样吧!

这个问题可能超越了 PHP(以及理智)。在评估布尔变量时,哪些是最佳实践? (假设三元组的//do stuff 太多了)

if ($bool) {
    // do true stuff
} else {
    // do false stuff
}

switch ($bool) {
    case true:
        // do true stuff
        break;
    default:
        // do false stuff
        break;
}

我对性能和/或特殊考虑因素更感兴趣,而不是像“If/Else 看起来更好”、“始终使用 Switch”或“做你认为正确的事情”这样的笼统陈述。

也就是说,除非真的没有区别。

【问题讨论】:

  • 为什么人们对这些事情的表现如此敏感?

标签: php boolean switch-statement if-statement


【解决方案1】:

使用if-else 版本。非常清晰易懂。

您不应该真正使用switch,除非您有多个 (> 2) 值要打开。在这种情况下,使用 switch 没有任何好处(除了让你的代码更难理解)。

如果性能有任何差异,if-else 版本会更快,尽管如果有任何差异,它真的可以忽略不计。

如果有的话,这将是一个微优化。不要这样做。在向代码引入任何“优化”之前,先对其进行分析并确定瓶颈。

【讨论】:

  • 谢谢。对于它的价值,我不会在事后分析我的代码并思考“伙计,我想知道什么会更快。”它更像是“在首先编写条件时我应该做什么。”
【解决方案2】:

以防万一,您还应该检查您的变量是否真的是布尔值(而不是“”、0 或 null,它们也可能评估为 false)

if($bool === false) {
 // false stuff
} else if($bool === true) {
 // true stuff
} else {
 /// WTF???
}

【讨论】:

  • else { throw FileNotFoundException }
猜你喜欢
  • 1970-01-01
  • 2017-08-02
  • 2011-04-18
  • 2018-01-13
  • 2020-11-16
  • 1970-01-01
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多