想象一下我们需要为单个方法调用创建一个对象的场景。以下哪项是更好的编码实践以及原因:
将对象放在变量中:
Foo foo = new Foo();
int val = foo.getVal();
优势:在异常处理的情况下,我们可以将构造函数中的异常与getVal()
函数中的异常隔离开来。
缺点:一个额外的变量。
直接在结果上调用方法:
int val = new Foo().getVal();
优势:不需要额外的变量 缺点:如果发生异常,则更难以确定构造函数或方法是否抛出异常。
答案 0 :(得分:3)
如果您确实不需要参考,请使用选项二。它可以让垃圾收集器更快地回收内存。
另一方面,如果你真的不需要引用,那么你的方法可能应该是static
。我知道每当我在生产环境中看到类似new Foo().getVal()
的内容时,我立即转到getVal()
定义并查找所有引用。百分之九十九,它应该是static
方法。
答案 1 :(得分:1)
由于JIT进行了优化,他们很可能具有相同的性能。总的来说,第二种选择更具可读性和简洁性。