在公司 Java 项目里面广泛使用 Stream 合适吗?

2018 年 7 月 24 日
 lhx2008
熟练 stream 之后,基本上可以用 for 的地方都用 stream 了,filter map flatnap collotors 真的非常方便,常常会写一个函数七八个 stream 操作叠上去。

但是也有一些问题
1. 操作比较简单的时候性能稍差,毕竟还要封装流水线。
2. 随着 stream 操作增多,数据类型不停流转,可读性变差
3. 有些 api 比如 collotors 还是比较复杂的,可能同事看不懂你写的代码。

大家是怎么取舍的呢?不讨论公司规定 /小组协商的问题,主要是你的想法是怎么样的呢?
3611 次点击
所在节点    问与答
24 条回复
terry0314
2018 年 7 月 24 日
适合,之前公司用 Java 7 向 leader 推荐了 Java 8 然后组内做了个简单的分享。大家都觉得还不错,能简化很多代码
WEAlex
2018 年 7 月 24 日
@terry0314 有参考吗?谢谢。
lovedebug
2018 年 7 月 25 日
看 effecrive java 第三版有建议,要慎用。代码少的时候可以,一多起来调试,可读性都变差。
lhx2008
2018 年 7 月 25 日
@lovedebug 是的,调试起来也是比较麻烦,遍历的时候可能会有一些 NPE 的问题没有处理
lhx2008
2018 年 7 月 25 日
但是写起来真的比 python 还好用
lhx2008
2018 年 7 月 25 日
不过调试的问题 h3 可读性的问题也可以让 stream 提前消费生成中间对象再入流,拆分粒度
Cbdy
2018 年 7 月 25 日
不要为了用而用,以代码清晰为准
limuyan44
2018 年 7 月 25 日
怎么取舍,你爽了别人惨了。适可而止就行。
terry0314
2018 年 7 月 25 日
@WEAlex 什么参考,示例代码吗
WEAlex
2018 年 7 月 25 日
@terry0314 是的。我们小组每周也在进行技术分享,想参考着做一期
terry0314
2018 年 7 月 25 日
@WEAlex 主要是 Java 8 实战这本书里的内容,我从 Stream 里面选了一些
lhx2008
2018 年 7 月 25 日
@limuyan44 惨倒说不上吧,总还是比动态语言好读的,而且只是写法改变了,复杂度并不会转移,只是看 10 行 stream 还是看 100 行 for 的问题
sagaxu
2018 年 7 月 25 日
我把公司 java 项目换成 kotlin 了,基本不写循环了
des
2018 年 7 月 25 日
歪个楼,看成 Steam 了,然后一脸懵逼
qinxi
2018 年 7 月 25 日
java8 都这么久了
不会用的人如果没有想学习的想法
那就这样淘汰他们吧
StephenDev
2018 年 7 月 25 日
可以试试用 RxJava 啊
zhaogaz
2018 年 7 月 25 日
最近我也在写,找点乐子学点新东西嘛,不然太无聊了。
nl101531
2018 年 7 月 25 日
合理,不过建议看下 Stream 的源码,这样你才能了解到自己写的操作到底循环了几次,到底有没有必要组装这个 pipeline 链。
earendil1412
2018 年 7 月 25 日
说是这么说,用 rxjava 怎么办? spring webflux 怎么办,还不是只能真香
RRL
2018 年 7 月 25 日
@nl101531 在理,分场景。

楼主确认性能很差,如果已经对业务造成了影响那么很明显不应该滥用。

假如是代码不够优雅,建议重新思考使用方式。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/473858

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX