JDK17 都出来了,感觉现在很多资深程序员 Stream 不会, Lambda 不会, Java .time 包不会

2022-07-11 14:27:31 +08:00
 qwerthhusn

不少资深人士写代码的时候还是各种 for 循环。

Lambda 也不用,还用各种匿名内部类。

还有 JDK8 的时期时间库,很多人还是在用 Date ,Calender 。现在的 LocalDate, LocalDateTime, YearMonth, ZonedDateTime 做时间计算真的特别直观简单,但是他们就喜欢用 Date ,简单的计算就用毫秒加减,复杂点的计算就先换成 Calender ,完事后再转换回 Date 。

甚至 JDK7 的 try-with-resources 语法我都感觉不少人都不知道。

所以,现在“JDK8 是主流”这句话是不对的,而是“JVM8 是主流”才是对的。语法的主流应该是 J2SE 1.5 。

16416 次点击
所在节点    Java
185 条回复
Kiske
2022-07-11 15:41:48 +08:00
我表示同意, 而且这样的员工比各位想象中还多, 甚至我自己就是,对 JDK8 以上的特性一概不用,

个人角度来看, 这算是学习知识上的停滞, 函数式 声明式编程好用, 但没那能力用.

生态环境上, 各位认为现在跑着的 JDK 1.5-1.7 的项目到底还有多少, 我认为在很多看不见的地方, 无法被统计的地方,还有大量的老旧系统, 这样的项目太多,直接导致外界很多人对整个 Java 生态圈产生了腐朽,臃肿.效率低的印象.
vfs
2022-07-11 15:43:00 +08:00
如果以会不会编程语言的高级特性来判断一个程序员的水平,那未免有些草率啊。 我称得上是老古董了,从来不适用高级特性,就是使用最简单的 while ,for ,if. 因此,我无论 写 java ,还是 c++,感觉都一样。
0x663
2022-07-11 15:45:15 +08:00
是,到现在我都不会茴字的四种写法
nothingistrue
2022-07-11 15:45:40 +08:00
@Cmdhelp #4 Lambda 就会让你多一份技能,而 Stream API ,会引导你走向流式数据处理的大门——艺多不压身。
@statumer #12 当数据量级小的时候二者没区别,当数据量级上去之后,stream API 对性能更好。

抛弃上面的不说,Stream API 在编码友好性(主要是链式操作),跟可读性上( Java 8 的还因为 API 不完善导致由局限,9 、10 之后就差不多完善了)都有很大的提升。OP 的观点只是略有不妥,而上面有些人,那是不学无术还要瞎叫。
tulongtou
2022-07-11 15:49:07 +08:00
什么都不会,凭什么被称作资深人士?
Akitora
2022-07-11 15:58:09 +08:00
time 包真心好用
siweipancc
2022-07-11 16:01:15 +08:00
良好的代码设计才是关键,一大堆循环,递归,无用的大量实例创建,用 jdk17 都救不来。

但是高版本的编译器有更好的优化又是个事实,op 不过是太激进了。
我负责的项目升到 13 又降回来 8 ,第三方库不支持,全是泪,幸好升级那会只用了几个特性
lujiaosama
2022-07-11 16:02:40 +08:00
真正的老玩具都是各种语法糖用得飞起的, 代码简练高效, 新手读起来有门槛但是读懂了就能感受到优雅. 哪天 review 看不懂刚毕业出来的新人写的代码那就闹大笑话了. 而且写习惯了声明式之后回头看命令式代码真的感觉又臭又长.
pocketz
2022-07-11 16:11:42 +08:00
java.time 真的很好用。。。
zmal
2022-07-11 16:14:08 +08:00
日经贴,会不会 stream 不能作为代码水平的判断工具,用 stream 写烂代码的人比比皆是。建议上 code 。
leaves615
2022-07-11 16:31:50 +08:00
能解决问题的代码都是好代码。
Suddoo
2022-07-11 16:41:59 +08:00
是啊、所以、这些所谓的“资深”程序员也就那么回事儿而已

都 Java18 了、很多东西早变了、JDK 也加入了大量新特性,但是“资深”程序员还是会用自己过时的经验来考新人:
new String 创建了几个对象
JVM 如何“调优”
手写几个设计模式
……

写代码的时候还是又臭又长的旧 API ,一行代码就能读取文件,非要几十行写完,显得自己严谨,问就是要懂“底层”

lambda 不用,还是一堆匿名内部类,问就是语法糖、没意义、“底层”重要,lambda 都特么 10 年前的玩意儿了
hs444
2022-07-11 17:02:42 +08:00
stream 和 lambda 一开始只是了解,工作中也不用,后来开始用 idea 之后活生生被 idea 教会了。
时间相关的操作都是直接用外部工具类。
try-with-resources 确实方便,一直在用。
hhjswf
2022-07-11 17:23:29 +08:00
localdatetime 相比 date 好在哪
coetzee
2022-07-11 17:32:27 +08:00
@hhjswf 这种问题搜一下不就知道了吗?
coetzee
2022-07-11 17:33:59 +08:00
对于大部分 Java 的人,被人家别的语言骂我觉得是没毛病的,你命名 Java17 可以做到很大简洁性提升,但是非要沿用老的一套,你问问他,裹脚布香不香?理由和借口贼多,其实都是放弃学习、放弃进步的表现,大部分面试只要问到八股文的,不用考虑是技术型工作,就是写业务,而且技术老旧
ql562482472
2022-07-11 17:34:01 +08:00
stream 不会、java.time 不会的,确实很讨厌,简单逻辑往往写一大堆 最后一看新 API 一句话就讲明白的事情
levon
2022-07-11 17:37:18 +08:00
stream 做循环确实代码比较丑
Huelse
2022-07-11 18:00:02 +08:00
@statumer #12 事实上全部使用基本语法并不代表着维护性更好,程序员们绝大多数优化都是为了优化而优化
gabon
2022-07-11 18:17:54 +08:00
stream api 可读性更高

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

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

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

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

© 2021 V2EX