【发布时间】:2012-10-09 14:42:29
【问题描述】:
我很好奇在同一行代码中打包多个和/或嵌套的方法调用是否会更好地提高性能,这就是为什么一些开发人员这样做的原因,其代价是降低了代码的可读性。
例如
//like
Set<String> jobParamKeySet = jobParams.keySet();
Iterator<String> jobParamItrtr = jobParamKeySet.iterator();
也可以写成
//dislike
Iterator<String> jobParamItrtr = jobParams.keySet().iterator();
就我个人而言,我讨厌后者,因为它在同一行中进行多次评估,而且我很难阅读代码。这就是为什么我尝试尽一切办法避免对每行代码进行多次评估。我也不知道 jobParams.keySet() 返回 Set 这让我很烦恼。
另一个例子是:
//dislike
Bar.processParameter(Foo.getParameter());
对
//like
Parameter param = Foo.getParameter();
Bar.processParameter(param);
前者让我感到恶心和头晕,因为我喜欢在每一行代码中使用简单而干净的评估,当我看到其他人的代码这样写时我只是讨厌它。
但是将多个方法调用打包在同一行中是否有任何(性能)优势?
编辑:单行也更难调试,感谢@stemm 的提醒
【问题讨论】:
-
编译器可能会修复它,使其不会产生影响(在大多数情况下)
-
单行代码也很难调试。
-
还有一件(重要的)事情:为编译器保留微优化——做任何你(和你的团队)觉得更易读的事情。可读性是给程序员的,优化是给编译器的。
-
我想你会发现所有这些例子最终都是相同的字节码。
-
“all on one line”示例通常被称为“train wreck”代码,例如:thomassundberg.wordpress.com/2011/12/30/…
标签: java performance coding-style