我很好奇在同一行代码中打包多个和/或嵌套方法调用是否会提高性能,这就是为什么一些开发人员这样做的原因,但代价是降低了代码的可读性。
例如
//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 的提醒
最佳答案
微优化是 killer 级的。如果您显示的代码引用是实例范围(或)方法范围,我会采用第二种方法。
方法范围变量将在方法执行完成后立即符合 GC 条件,因此即使您声明了另一个变量,也没关系,因为范围是有限的,您获得的优势将是可读的主表代码。
关于Java 性能与代码风格 : Making multiple method calls from the same line of code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12802562/