Java 项目该不该用 stream 流来编写代码?考虑 code viewer

2022-03-30 18:11:49 +08:00
 w741069229
8300 次点击
所在节点    Java
95 条回复
echo1937
2022-03-31 00:55:17 +08:00
@v2eb 我见过把整个业务逻辑写在一个 map()里面的
WebKit
2022-03-31 01:03:10 +08:00
stream 不止简洁,的性能更好
Hider5
2022-03-31 01:17:33 +08:00
Stream 可读性好,但空指针问题不好排查
w741069229
2022-03-31 06:52:04 +08:00
@EscYezi 哈哈哈哈哈。我一直在用
wxyrrcj
2022-03-31 07:32:16 +08:00
多好用 为啥不用
dreamramon
2022-03-31 07:49:47 +08:00
出了空指针,堆栈不好查。
aptupdate
2022-03-31 08:03:55 +08:00
前段时间有个奇葩需求要对集合各种过滤、排序、分组,当时就感叹要是没有 stream 我得累个半死。
所以这种省时省力的方法为什么不用呢? NPE 问题确实麻烦,不过新版 idea 里有个流调试器,直接可视化处理过程。
micean
2022-03-31 08:33:05 +08:00
stream 的 lambda 里面要精炼、简洁到不可能出现 NPE 问题
cweijan
2022-03-31 08:47:25 +08:00
stream 还是要用的, 但是有的程序员水平低, 用 stream 写的代码可读性极差.
neptuno
2022-03-31 09:13:46 +08:00
看不懂 stream ,这个水平 review 了有啥用吗
ychost
2022-03-31 09:28:52 +08:00
stream 结合 Optional 用起来美滋滋,C# 的 Linq 更加的纯粹舒服
arthas2234
2022-03-31 09:53:54 +08:00
stream 挺好用的,用来处理集合再适合不过啦。说看不懂的,可读性差的,是没用过的吧
nothingistrue
2022-03-31 09:55:18 +08:00
Stream 及 Lambda 表达式的第一优点就是代码简洁,这跟 code review 是正相关,不是互斥的。

不过 Lambda 表达式能无缝转接,Stream 不能。Stream 使用的是数据流逻辑,跟传统的“判断、循环……”逻辑有区别,转换过去需要学习。但是这个学习成本不大,而且如果是数据结构 /算法已经很溜的,早就回了压根不用学。大佬刚开始不让用,可能还是要考虑团队管理,大佬要是一直不让用,那他 100%是假大佬。
Huelse
2022-03-31 10:02:48 +08:00
哪来那么多可读性问题?是你自己“懒”吧?
yor1g
2022-03-31 10:09:38 +08:00
java 8 都多少年了 还抱着 java6 么
superchijinpeng
2022-03-31 10:11:32 +08:00
Why not ?
Loku
2022-03-31 10:15:12 +08:00
stream 都 jdk1.8 的东西了。 现在 jdk1.18 了。
loryyang
2022-03-31 10:16:17 +08:00
可以,但,注意别过于复杂
我对代码的认知就是,这代码写完,过段时间,你自己能不能很快地看懂,看不懂就说明写得不好。要不改逻辑,要不写注释

最后,stream 也有上面提到的堆栈问题,一般不建议做非常复杂的操作
xwayway
2022-03-31 10:18:31 +08:00
可以,但是不要过长,一句话完成一个目的,需要写得太长了,那样就成裹脚布了。
Torpedo
2022-03-31 10:20:20 +08:00
@pengtdyd 好像两方都认为自己才是人,对方是蠢货

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

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

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

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

© 2021 V2EX