2

メソッドで 2 回以上使用される可能性のある値にアクセスするために、何らかの「ヘルパー」変数を作成するのがどのような場合に適しているかを知りたいです。

次の抜粋中にこの質問に出くわしました: より良いもの: sizea の値に2回アクセスするか、リストのサイズを保持Listする変数を作成しますか?Integer

List<String> list;

private myIndexHelper() {
    if (list.size % 2 == 0) {
        return PREFIX + list.size;
    }
    return "";
}

private myIndexHelper() {
    int size = list.size;
    if (size % 2 == 0) {
        return PREFIX + size;
    }
    return "";
}

これはおそらく過剰な最適化である可能性があります。しかし、一般的に(パフォーマンスを無視して)、list.sizeプロパティに何度もアクセスするか、サイズを保持する変数を作成しますか?

4

3 に答える 3

1

「より良い」アプローチはありません。

  1. list.sizeまたはローカルsizeパラメーターを呼び出すと、同じパフォーマンスが得られます
  2. Doug Leaによると、ローカル パラメータを宣言するfinalと、パフォーマンスが向上する可能性があります。
  3. 「使いやすさ」である唯一の側面は、「より短い」パラメーターが必要な場合です。そのため、size代わりにローカルパラメーターを使用myListOfReallyNiceIntegers.sizeすると、読み取り/書き込みが簡単になります(forループなどを使用)。
于 2013-11-06T16:18:04.563 に答える
0

この場合、可読性と言えます。可読性がある場合は、どちらの方法でも問題ありません。一方だったら

private myIndexHelper() {
    if (dataStricture.subDataStructure.list.size % 2 == 0) {
        return PREFIX + dataStricture.subDataStructure.list.size;
    }
    return "";
}

次に、変数アプローチを使用しますが、それ以外の場合は大したことではありません。

ただし、これがループまたはタイム クリティカルなメソッドである場合、ループ内 (またはタイム クリティカルなメソッド内) で list.size を呼び出すと、メソッド呼び出しに余分な時間が浪費されるだけであり、回避する必要があります。

私が言ったように、このコードでは大したことはありません。

于 2013-11-06T16:14:30.643 に答える