代码之家  ›  专栏  ›  技术社区  ›  mheathershaw

是创建一个新对象并返回它,还是在return语句中创建新对象更好?

  •  5
  • mheathershaw  · 技术社区  · 15 年前

    例如:

    public Person newPerson() {
      Person p = new Person("Bob", "Smith", 1112223333);
      return p;
    }
    

    public Person newPerson() {
      return new Person("Bob", "Smith", 1112223333);
    }
    

    一个比另一个更有效率吗?

    6 回复  |  直到 15 年前
        1
  •  10
  •   Ian C.    15 年前

    在返回之前赋值给一个临时变量,这样您就有机会在newPerson()中进行错误检查和更正。返回新调用需要newPerson()方法的调用方捕获错误并从错误中恢复。

        2
  •  17
  •   Bozho    15 年前

    在性能方面,没有任何区别会让你选择一个而不是另一个。

    • 为了调试,前者更好,即当您想要跟踪执行,或者在创建和返回之间记录一些信息时。

    一般来说,我建议使用后者,并且无论何时需要调试它,都可以临时切换到第一个(两行)变体。

        3
  •  1
  •   user177800 user177800    15 年前

    没有人比其他人更高效,JIT会在运行时将其内联到最高效的位置。

        4
  •  1
  •   benzado    15 年前

    在理智的世界里,它们将编译成完全相同的字节码,因此就性能而言,它们是相同的。那么唯一的区别就是人类:

    使调试稍微容易一些:您可以在return语句上设置断点并检查 p . 在单行版本中,这更难做到。

    在一条线上做

    在实践中,我会将它写在一行中,在最坏的情况下,如果遇到调试问题,我会创建一个临时变量。此外,单元测试不应该消除调试的需要吗?:-)

        5
  •  0
  •   Carl Manaster    15 年前

    第二个选项更短,更容易阅读。

        6
  •  0
  •   polygenelubricants    15 年前

    一个并不比另一个更有效,但是直接返回创建的对象可能更干净,因为您使用的临时变量更少。如果您必须使用临时变量,请使用它 final 并恰当地命名。