1

変数の値を配列として設定しています。

いくつかの条件に基づいて、ウェザーを初期化する必要があります

array('a', 'b');

また

array('a', 'b', 'c');

では、最善の方法は何ですか?

書くべきか

$a = array('a', 'b');

if($b > 0) {

    $a[] = 'c'?

}

また

if($b > 0) {

    $a = array('a', 'b', 'c');

} else {

    $a = array('a', 'b');

}

最初のものは私にとってより素敵に見えます。

4

2 に答える 2

1

まず、「最善」とは何かを定義する必要があります。私にとって最高のものは次のとおりです。

  1. 高速に実行します。
  2. 「正しい」方法で行いました。
  3. 読みやすい。

どちらも実行速度を比較するとほぼ同じなので (100 万回の反復で簡単なテストを行いました)、ここでは明確な勝者はありません。

どちらの例も読みやすいですが、何らかの理由で配列に「a1」を追加するように要求された場合、2 行ではなく 1 行のコードを変更する必要があるため、最初の例に固執します。

編集: これが私が実行したコードです ($b = 0 と $b = 1 はそれをあまり変更しません.:コードの実行が速くなります。

$b = 1;

$t = microtime(true);

$a = array('a', 'b');
if($b > 0) {
    $a[] = 'c';
}

printf("%f\n", microtime(true)-$t);


$t = microtime(true);

if($b > 0) {
    $a = array('a', 'b', 'c');
} else {
    $a = array('a', 'b');
    $a[] = 'c';
}

printf("%f\n", microtime(true)-$t);

出力:

0.000017
0.000003
于 2012-10-07T14:42:31.183 に答える
1

IMO、最初のオプションは、DRY と分割統治の原則に従うため、最適です。

これは、最初のアプローチが平均してわずか 13.5% 遅いことを示す別のベンチマークです。

于 2012-10-07T15:21:41.487 に答える