return recordsAffected > 0;
這將返回要麼true
或false
,做我需要把return recordsAffected > 0 ? true : false
?
return recordsAffected > 0;
這將返回要麼true
或false
,做我需要把return recordsAffected > 0 ? true : false
?
你不需要這一點。主要原因是,它將是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;
?>
的是。
一個有趣的角落優化(來自lang POV我的意思);我甚至認爲即使PHP能夠優化'x? true:false' as'x' – ShinTakezou
@ShinTakezou yes ...不過,我相信這是一件事情,可能會有一天會導致性能下降。可能會添加[this](http://en.wikipedia.org/wiki/Analysis_of_algorithms)和[this](http://en.wikipedia.org/wiki/Algorithmic_efficiency)文章。 「我明白」不應該影響性能。而且,是的,我也因執行時間而感到驚訝。 ')' – BlitZ
你當然不需要。
return recordsAffected > 0;
的意圖和語義是非常清楚的。這應該適用於每一個正規的程序員閱讀你的代碼。
return recordsAffected > 0 ? true : false;
充其量是多餘的,但我會走得更遠,並稱之爲不利。第二個片段不會增加任何內容,但複雜性。我敢打賭,如果你一直沒有寫這樣的代碼(並且我相信大多數像樣的程序員都不這樣做),第二個陳述至少需要兩遍才能掌握這個意思,如果不是更多的話。當有兩個語義相同的解決方案時,你應該始終堅持最清晰的解決方案,這並不一定是最明確的解決方案。沒有人會寫類似
if(recordsAffected > 0 ? true : false)
{
}
var_dump(recordsAffected> 0);'返回什麼? –
這真的是一個三元組,它肯定只是一個返回布爾值的評估? –