是否有必要在三元组中明确地设置true / false?

时间:2013-10-02 19:55:01

标签: php ternary-operator

如果我有

return recordsAffected > 0;

会返回truefalse,我是否需要return recordsAffected > 0 ? true : false

3 个答案:

答案 0 :(得分:9)

不,你没必要因为你的代码工作得很好。您可能会发现一些开发人员建议您这样做,因为阅读和理解更清楚,但这是个人意见的问题。

总是编码好像维护你的代码的人是一个知道你住在哪里的暴力精神病患者 - Martin Golding

答案 1 :(得分:1)

你不需要那个。主要原因是它将是2个操作而不是1个:首先用于比较,第二个用于值选择。我还想提一下,每个条件运算符(甚至三元)都会影响性能

简短测试:

<?php
header('Content-Type: text/plain; charset=utf-8');

$start  = microtime(true);

for($i = 1; $j = 1, $i <= 10000000; $i++){
    ($i == $j);
}

$end    = microtime(true);

echo 'Not ternary: ', $end - $start, PHP_EOL;

$start  = microtime(true);

for($i = 1; $j = 1, $i <= 10000000; $i++){
    ($i == $j ? true : false);
}

$end    = microtime(true);

echo 'Ternary: ', $end - $start, PHP_EOL;
?>

它是results

答案 2 :(得分:0)

你当然不需要。

的意图和语义
return recordsAffected > 0;

非常清楚。这应该适用于每个读取代码的程序员。

return recordsAffected > 0 ? true : false;

充其量是多余的,但我会更进一步,称之为有害。第二个片段不会在语句中添加任何内容,但会增加复杂性。我敢打赌,如果你不是一直写这样的代码(而且我相信大多数体面的程序员都不这样做),第二个语句将至少带你两遍来掌握意义,如果不是更多的话。当有两个语义上相等的解决方案时,你应该始终坚持最清晰的解决方案,这不一定是最明确的解决方案。没有人会写像

这样的东西
if(recordsAffected > 0 ? true : false)
{
}