@DavidM 的回答是正确的。但是,我想从风格上补充一点,我认为这取决于函数的名称及其上下文。
例子:
if ($food->tastesGood()) {
echo 'Mmmm!';
}
// vs.
$foodTastesGood = $food->tastesGood();
if ($foodTastesGood) {
echo 'Mmmm!';
}
在这种情况下,很明显方法的返回值将tastesGood()
是来自方法名称及其上下文的布尔值。使用临时变量不会给你的代码增加任何东西,只会让它变得多余且一目了然。另外,如果变量在使用之前没有定义,那么你必须去找到定义来理解条件。在这些情况下,我会说使用变量会更糟。
另一个例子:
if ($dishes->wash() !== FALSE) {
echo 'Sparkly!';
}
// vs.
$dishesAreClean = $dishes->wash() !== FALSE;
if ($dishesAreClean) {
echo 'Sparkly!';
}
在这种情况下,我们不能wash()
从它的名称中真正推断出方法的返回类型,事实上,它似乎在成功和FALSE
错误时都不返回任何内容。然后检查盘子是否干净需要我们确保没有错误,但第一种情况不会产生特别可读或自记录的代码。然而,第二种情况通过临时变量添加了关于正在发生的事情的非常明确的信息。在这些情况下,我会说使用变量会更好。