0

想象一个场景,我们只需要为单个方法调用创建一个对象。以下哪一项是更好的编码实践以及原因:

  1. 将对象放入变量中:

    Foo foo = new Foo();
    int val = foo.getVal();
    

    优点:在异常处理的情况下,我们可以将构造函数中的异常与getVal()函数中的异常隔离开来。
    缺点:一个额外的变量。

  2. 直接在结果上调用方法:

    int val = new Foo().getVal();
    

    优点:不需要额外的变量。
    缺点:如果发生异常,更难判断是构造函数还是方法抛出了。

4

2 回答 2

3

如果您真的不需要参考,请使用选项二。它让垃圾收集器更快地回收内存。

另一方面,如果您真的不需要参考,您的方法可能应该是static开始。我知道每当我new Foo().getVal()在生产环境中看到类似的东西时,我都会立即去getVal()定义并找到所有引用。一百次九十九次,应该是一种static方法。

于 2013-08-16T18:34:17.093 回答
1

由于 JIT 进行了优化,它们很可能具有相同的性能。总体而言,第二个选项更具可读性和简洁性。

于 2013-08-16T18:35:28.787 回答