我有一个返回对象的方法,我需要多次调用两个方法。所有这一切都必须写在已执行的动作事件中。
根据你的哪一个是更好的解决方案?哪一个消耗的资源更少,速度更快?
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());
}
答案 0 :(得分:0)
我想说,这绝不是计算机程序员在没有首先被提示的情况下应该担心的事情。你应该始终关注更具可读性的东西。
如果您运行代码并遇到有关性能的问题,那么请返回并检查是否存在显着的性能差异。无论如何,我相信你找不到一个。现代编译器非常擅长优化这样的事情。
答案 1 :(得分:-1)
在性能方面,它主要取决于getSomething1()
处理。如果不执行计算或轻量计算,则这两种方式应该具有大致相同的性能
如果处理更加繁重,您可能会有一些差异,但仍然取决于在应用程序框架中执行的调用次数。
除了在您的情况下实际上不是问题的性能之外,您应该首先关注其他领域,例如潜在的副作用和代码质量。
副作用:该方法是否会产生您不想重复的副作用?
在这种情况下,请确保您一次调用它
代码质量:通常应避免代码重复,第二个代码重复,但同时应避免引入比所需更多的变量。那么哪种方式更好?我认为我们应该以一种方式或另一种方式让整个代码进行论证。
请注意,您还可以通过引入接受对象的方法来选择第三个选项:它避免重复并限制声明变量的数量:
doSomething(getObject());
private void doSomething(Foo foo){
foo.getSomething1();
foo.getSomething2();
foo.getSomething1();
}