是否建议重用参考变量或防止重用?

时间:2013-09-28 02:33:42

标签: java

在以下代码中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());
    }

如果代码有错误请忽略,请只关注已经提出的问题。感谢。

2 个答案:

答案 0 :(得分:7)

"Is it recommended to reuse reference variables or to prevent reuse?" - 建议编写干净,易懂,可重复使用的代码。

  • 当逻辑意义上使用局部变量时,使用局部变量,当使用它们时,使用更高范围的变量。
  • 使用最有限范围的局部变量可能是一件好事,因为当它们声明的块超出范围时它们会被清理。
  • 虽然对于它们引用的对象并不总是如此,因为变量!=对象。确保您完全理解引用变量与引用或对象之间的区别。
  • 不要担心过早优化。
  • 但要做个人资料时间关键代码。
  • 最担心其他人是否会理解您的代码,或者更重要的是,您未来的自我是否会在1年后理解您的代码。

答案 1 :(得分:0)

我自己的感觉是,如果我正在查看由其他人编写的具有参数的函数,并且无论出于何种原因,我首先向下看函数的底部并查看所使用的参数,我倾向于假设底部的参数将是传递给函数的参数。因此,如果有一个语句分配给中间某个参数的参数,该参数分配给参数(当然,它不会改变实际的参数而是一个临时变量从参数值开始,可能会令人困惑。出于这个原因,我倾向于在这种情况下声明一个局部变量(如nodePopped)。这部分是一个风格问题,但我发现它对我有用,并且我在过去读过其他人时遇到了问题。修改参数时的代码。