0

次のコードについて (Java と .net の両方で) アドバイスが必要です。

 public void method(bool value)
 {
     String someString;

     //some code

     if (value)
     {
          //some code
          ...
         someString = "one" + value;              
     }
     else
     {
         //some code
         ...
         someString = "two" + value;
     }

 }

どちらが適切で、その理由は何ですか? 上記のようなコードまたは次のようなコード

someString = "onetrue";
someString = "twofalse";
4

3 に答える 3

1

JDK によるコンパイルと最適化の後、次のmethodようになります。

public static String method(boolean value) {
    String someString;

    if (value) {
        StringBuilder sb = new StringBuilder();
        sb.append("one");
        sb.append(value);
        someString = sb.toString();
    } else {
        StringBuilder sb = new StringBuilder();
        sb.append("two");
        sb.append(value);
        someString = sb.toString();
    }
    return someString;
}

このコードが非常に頻繁に呼び出されると、2 番目のバージョンと比較して、パフォーマンスに影響を与える可能性があります。いずれの場合も、新しい StringBuilder が構築され、3 つのメソッドが呼び出されます。を呼び出す前にブール値をオブジェクトに変換する必要がありますappend。2 番目のバージョンでは定数を返すだけです。すべては、このコードが呼び出される頻度に依存します。

于 2013-04-22T08:35:46.607 に答える
0

高レベルではどちらも同じですが、下位レベルを見下ろす場合は、次の方法を使用することをお勧めします。

someString = "onetrue";

someString = "twofalse";

これは、"one" + value を実行すると、実際には値が booltoString()であり、bool オブジェクトのメソッドが呼び出されて文字列に追加されるためです。基本的に、文字列に追加するものを指定するだけではなく、別のステップを追加するだけです。

于 2013-04-18T00:06:41.710 に答える
0

どちらも純粋にスタイルに違いはありません。

あなたが持っているので、// some other code私は最初に固執します。各ブランチに 1 行しかない場合は、どちらでもかまいません。

于 2013-04-17T23:59:38.517 に答える