Java 性能与代码风格 : Making multiple method calls from the same line of code

标签 java performance coding-style

我很好奇在同一行代码中打包多个和/或嵌套方法调用是否会提高性能,这就是为什么一些开发人员这样做的原因,但代价是降低了代码的可读性。

例如

//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/

相关文章:

javascript - iFrame - 在 Web 应用程序中实现 Iframe 的成本

python - 如何使用资源模块来衡量一个函数的运行时间?

Android canvas setShadowLayer 大大降低了性能

c# - 将大括号与单行 "if"语句的语句放在同一行是否是一种错误的形式?

java - @ConditionalOnProperty 可以使用嵌套属性值吗?

java - 在 JAAS 的策略文件中授予 URL 权限

java - 下载文件(节点上有chrome)并将其保存到服务器文件系统上

java - PreparedStatement 缓存 - 这是什么意思(它是如何工作的)

android - 在样式定义中使用@string 资源

coding-style - 一个人应该练习防御性编程的程度是多少?