1

私が持っている場合

return recordsAffected > 0;

どちらかを返すか、trueまたはfalse置く必要がありreturn recordsAffected > 0 ? true : falseますか?

4

3 に答える 3

1

その必要はありません。主な理由は、1 つではなく 2 つの操作になることです。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;

せいぜい冗長ですが、さらに進んで有害と呼びます。2 番目のスニペットはステートメントに何も追加しませんが、複雑さだけを追加します。いつもこのようなコードを書いていないのであれば (まともなプログラマーはほとんど書かないと思います)、2 番目のステートメントの意味を理解するのに少なくとも 2 回はかかるでしょう。意味的に等しい解決策が 2 つある場合は、常に最も明確な解決策に固執する必要があります。みたいなことを書く人はいないだろう

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