java
Integer fileId = pin.getFileId(); File file = fileService.get(fileId); pin.setFile(file);
java
pin.setFile(fileService.get(pin.getFileId()));
这两个有效率快慢之分,感觉第2种要快一些
按说法,书写应该是第一种,也就是可读性,可维护性为重,第二种则是编译器要干的事
完全不用考虑效率,可以认为是一样的,主要是看你是否后面还会用到这些方法的返回值。个人感觉第一个结构比较清晰,推荐使用。还有,有考虑因为这个性能问题的时间,还不如去在其他方面去提升。
对现代编译器来说,这两种写法应该没有区别吧
个人建议第一种写法,一是因为易于阅读,二是调试的时候方便看中间步骤的结果
写代码不只是为了效率,代码要最求更加优雅,阅读起来才不特么费劲。
将两种操作各运行1000000次,然后比较时间即可。结果是第一种似乎总是比第二中慢,但是,不超过50ms,因此,没有较大的影响,相比较而言,第一种可读性更强。
刚看了《黑客与画家》,“程序写出来是给人看的, 碰巧机器也能运行”
第一种会产生中间变量,会占用一点点点多余的内存空间,可以忽略不计。
比起可读性,这点小牺牲是值得的。
我认为在这种较小的语句级的效率影响并不明显,应该把更多的经历放在算法和架构上,这个级别上的效率会有数倍的差距。
最大的区别是出异常,log里只记了一个出错行号的时候。
都用java了这点点效率影响不大``!
两种写法的效率可以忽略不计。
看了楼上这么多支持第一种写法的意见,其实我是更倾向第二种写法的。
1.首先要看变量fileId和file是否在其他地方有用到,如果只用在setFile方法里面,那可以取消这些中间变量的定义(这样可以少费点脑筋想变量名,取变量名经常是编程一大难题-_-)。
2.getFileId这个方法从方法名就可以知道获得的是一个fileId,所以再创建个变量fileId没什么必要。
3.通过setFile方法可以知道传入的参数是一个File对象,所以也没有必要再创建个变量file。
4.第二种写法看起来更加简洁。
很多人会觉得第二种写法不好调试,其实在IDEA中及时不提取变量也可以很方便地查看中间变量的值: