当我发现自己多次调用同一个 getter 方法时,这应该被认为是一个问题吗? [总是] 分配给局部变量并只调用一次是否更好?
我确定答案当然是“视情况而定”。
我更关心更简单的情况,其中 getter 只是一种“传递私有(private)变量的值”类型的方法。即不涉及昂贵的计算,不消耗数据库连接等。
我的“是否更好”的问题与代码可读性(风格)和性能有关。也就是说,是否有那么大的性能损失:
SomeMethod1(a, b, foo.getX(), c);
SomeMethod2(b, foo.getX(), c);
SomeMethod3(foo.getX());
对比:
X x = foo.getX();
SomeMethod1(a, b, x, c);
SomeMethod2(b, x, c);
SomeMethod3(x);
我意识到这个问题有点挑剔和灰色。但我刚刚意识到,我根本没有评估这些权衡的一致方法。我正在寻找一些不仅仅是完全异想天开的标准。
谢谢。
最佳答案
选择不应该真正与性能有关,而应该与代码可读性有关。
当您创建一个变量时,您可以为其指定在当前上下文中应有的名称。当您多次使用同一个值时,它肯定具有真正的意义,而不仅仅是一个方法名称(或者更糟的是一系列方法)。
阅读起来真的更好:
String username = user.getName();
SomeMethod1(a, b, username, c);
SomeMethod2(b, username, c);
SomeMethod3(username);
比
SomeMethod1(a, b, user.getName(), c);
SomeMethod2(b, user.getName(), c);
SomeMethod3(user.getName());
关于java - Java 中的过早优化 : when to use "x = foo.getX()" vs simply "foo.getX()",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3612508/