Aar*_* Fi 13 java coding-style
当我发现自己多次调用相同的getter方法时,这应该被认为是一个问题吗?[always]分配给局部变量并且只调用一次会更好吗?
我肯定答案当然是"这取决于".
我更关心的是更简单的情况,其中getter只是一个"传递私有变量值"类型的方法.即没有涉及昂贵的计算,没有消耗数据库连接等.
我的"它更好"的问题涉及代码可读性(样式)和性能.即具有如此大的性能影响:
SomeMethod1(a, b, foo.getX(), c);
SomeMethod2(b, foo.getX(), c);
SomeMethod3(foo.getX());
Run Code Online (Sandbox Code Playgroud)
VS:
X x = foo.getX();
SomeMethod1(a, b, x, c);
SomeMethod2(b, x, c);
SomeMethod3(x);
Run Code Online (Sandbox Code Playgroud)
我意识到这个问题有点挑剔和灰色.但我刚刚意识到,我根本没有一致的方法来评估这些权衡.钓鱼的标准不仅仅是完全异想天开.
谢谢.
Col*_*ert 15
选择不应该是关于性能损失,而是关于代码可读性.
创建变量时,可以在当前上下文中为其指定应有的名称.当你多次使用相同的值时,它肯定具有真正的意义,而不仅仅是方法名称(或更糟糕的方法链).
最好是阅读:
String username = user.getName();
SomeMethod1(a, b, username, c);
SomeMethod2(b, username, c);
SomeMethod3(username);
Run Code Online (Sandbox Code Playgroud)
比
SomeMethod1(a, b, user.getName(), c);
SomeMethod2(b, user.getName(), c);
SomeMethod3(user.getName());
Run Code Online (Sandbox Code Playgroud)
对于普通的getter - 只返回值的那些 - HotSpot在调用代码中内联它,因此它将尽可能快.
但是,我有一个关于在一行上保留语句的原则,这通常导致像"foo.getBar()"这样的表达式太长而不适合.然后,对我来说,将它提取到局部变量("Bar bar = foo.getBar()")更具可读性.
它们可能是两件不同的东西.
如果GetX是非确定性的,那么第一个将得到与第二个不同的结果
就个人而言,我会使用第二个.它更明显,更少不必要的冗长.
| 归档时间: |
|
| 查看次数: |
557 次 |
| 最近记录: |