1

如果我有

return recordsAffected > 0;

哪个会返回true或者false,我需要放return recordsAffected > 0 ? true : false吗?

4

3 回答 3

9

不,您不必这样做,因为您的代码可以正常工作。您可能会发现一些开发人员建议这样做,因为它更易于阅读和理解,但这是个人意见问题。

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

于 2013-10-02T19:55:50.643 回答
1

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

简短的测试:

<?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;
?>

它的结果

于 2013-10-02T20:06:32.130 回答
0

你当然不需要。意图和语义

return recordsAffected > 0;

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

return recordsAffected > 0 ? true : false;

充其量是多余的,但我会更进一步,称其为有害。第二个片段不会向语句添加任何内容,但会增加复杂性。我敢打赌,如果你不是一直写这样的代码(而且我相信大多数体面的程序员不会),第二个语句会让你至少通过两次才能掌握含义,如果不是更多的话。当有两个语义相同的解决方案时,您应该始终坚持最清晰的一个,这不一定是最明确的一个。没有人会写出类似的东西

if(recordsAffected > 0 ? true : false)
{
}
于 2015-10-08T10:25:11.567 回答