更好地使用变量或始终调用方法?

时间:2018-06-13 19:09:33

标签: java performance

我有一个返回对象的方法,我需要多次调用两个方法。所有这一切都必须写在已执行的动作事件中。

根据你的哪一个是更好的解决方案?哪一个消耗的资源更少,速度更快?

public void actionPerformed(ActionEvent e) { 
    Object obj1 = getObject().getSomething1();
    Object obj2 = getObject().getSomething2();

    doSomething1(obj1);
    doSomething2(obj2);
    doSomething3(obj1);
}

或者它更好

public void actionPerformed(ActionEvent e) {
    doSomething1(getObject().getSomething1());
    doSomething2(getObject().getSomething2());
    doSomething3(getObject().getSomething1());
}

2 个答案:

答案 0 :(得分:0)

我想说,这绝不是计算机程序员在没有首先被提示的情况下应该担心的事情。你应该始终关注更具可读性的东西。

如果您运行代码并遇到有关性能的问题,那么请返回并检查是否存在显着的性能差异。无论如何,我相信你找不到一个。现代编译器非常擅长优化这样的事情。

答案 1 :(得分:-1)

在性能方面,它主要取决于getSomething1()处理。如果不执行计算或轻量计算,则这两种方式应该具有大致相同的性能 如果处理更加繁重,您可能会有一些差异,但仍然取决于在应用程序框架中执行的调用次数。

除了在您的情况下实际上不是问题的性能之外,您应该首先关注其他领域,例如潜在的副作用和代码质量。
副作用:该方法是否会产生您不想重复的副作用? 在这种情况下,请确保您一次调用它 代码质量:通常应避免代码重复,第二个代码重复,但同时应避免引入比所需更多的变量。那么哪种方式更好?我认为我们应该以一种方式或另一种方式让整个代码进行论证。

请注意,您还可以通过引入接受对象的方法来选择第三个选项:它避免重复并限制声明变量的数量:

doSomething(getObject());

private void doSomething(Foo foo){
   foo.getSomething1();
   foo.getSomething2();
   foo.getSomething1();
}