2013-10-02 14 views
1

如果我有是否有必要在三元組中明確地表示真/假?

return recordsAffected > 0; 

這將返回要麼truefalse,做我需要把return recordsAffected > 0 ? true : false

+0

var_dump(recordsAffected> 0);'返回什麼? –

+0

這真的是一個三元組,它肯定只是一個返回布爾值的評估? –

回答

9

不,你不必因爲你的代碼工作得很好。你可能會發現一些開發人員建議這樣做,因爲它更清楚地閱讀和理解,但這是個人意見的問題。

始終代碼,如果該人維護你的代碼是一個暴力變態誰知道你住在哪裏 - 馬丁·戈爾丁

+0

我對*有關潛在精神病的建議純屬* *。 –

+0

我也是;以防我已經透露我的地址。 – Bathsheba

+2

我是一個暴力的精神病患者,如果你做'foo會吃你的狗嗎? true:false'。好吧,我實際上只會感到輕微的惱火和推特,但它幾乎是一回事。 – kojiro

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

的是​​。

+1

一個有趣的角落優化(來自lang POV我的意思);我甚至認爲即使PHP能夠優化'x? true:false' as'x' – ShinTakezou

+0

@ShinTakezou yes ...不過,我相信這是一件事情,可能會有一天會導致性能下降。可能會添加[this](http://en.wikipedia.org/wiki/Analysis_of_algorithms)和[this](http://en.wikipedia.org/wiki/Algorithmic_efficiency)文章。 「我明白」不應該影響性能。而且,是的,我也因執行時間而感到驚訝。 ')' – BlitZ

0

你當然不需要。

return recordsAffected > 0; 

的意圖和語義是非常清楚的。這應該適用於每一個正規的程序員閱讀你的代碼。

return recordsAffected > 0 ? true : false; 

充其量是多餘的,但我會走得更遠,並稱之爲不利。第二個片段不會增加任何內容,但複雜性。我敢打賭,如果你一直沒有寫這樣的代碼(並且我相信大多數像樣的程序員都不這樣做),第二個陳述至少需要兩遍才能掌握這個意思,如果不是更多的話。當有兩個語義相同的解決方案時,你應該始終堅持最清晰的解決方案,這並不一定是最明確的解決方案。沒有人會寫類似

if(recordsAffected > 0 ? true : false) 
{ 
} 
相關問題