我喜欢让自己陷入这些荒谬的境地,在那里我过度评估我的编码习惯,所以在这里!
这个问题可能超越了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”或“做你认为合适的事情”这样的一揽子陈述。
也就是说,除非确实没有差异。
答案 0 :(得分:10)
使用if-else
版本。它非常清晰易懂。
除非您要打开多个(> 2)值,否则不应该使用switch
。在这种情况下,你不会使用开关获得任何东西(除了使你的代码不易理解)。
如果性能有任何差异,if-else
版本会更快,但如果有任何差异,它实际上可以忽略不计。
如果有的话,这将是微观优化。不要这样做。在对代码引入任何“优化”之前,请对其进行概要分析并确定您的瓶颈。
答案 1 :(得分:0)
为了以防万一,您还应该检查您的变量是否真的是一个布尔值(而不是“”,0或null,它也可以评估为false)
if($bool === false) {
// false stuff
} else if($bool === true) {
// true stuff
} else {
/// WTF???
}