0

次のコードnodeは再利用されています。今はそのままでいいですか、それとも新しい参照変数を作成することをお勧めしますnodePoppedか?

  public void preOrder(TreeNode node) {   
        final Stack<TreeNode> stack = new Stack<TreeNode>();
        do {
            System.out.println(node.item);

            while (node != null) {
                stack.push(node.left); // just like a function call
            }

            node = stack.pop();   // OR TreeNode nodePopped = stack.pop() ? 
            if (node.right != null) {
                stack.add(node);
            }

        } while (!stack.isEmpty());
    }

コードにバグがある場合は無視してください。尋ねられた質問だけに注目してください。ありがとう。

4

2 に答える 2

7

"Is it recommended to reuse reference variables or to prevent reuse?"-- クリーンでわかりやすく、再利用可能なコードを作成することをお勧めします。

  • ローカル変数を使用することが論理的に理にかなっている場合はローカル変数を使用し、使用することが理にかなっている場合はより高い範囲の変数を使用します。
  • 宣言されたブロックがスコープ外になるとクリーンアップされるため、可能な限り限定されたスコープのローカル変数を使用することはおそらく良いことです。
  • これは、変数 != オブジェクトであるため、参照するオブジェクトに常に当てはまるとは限りません。参照変数と参照またはオブジェクトの違いを完全に理解していることを確認してください。
  • 時期尚早の最適化について心配する必要はありません。
  • ただし、タイム クリティカルなコードをプロファイリングします。
  • 他の人があなたのコードを理解するかどうか、またはおそらくもっと重要なこととして、1 年後に将来の自分があなたのコードを理解できるかどうかを最も心配してください。
于 2013-09-28T02:39:07.943 に答える