实习生,公司项目 Java Kotlin 混用, Java 套路都没摸清,就要学 Kotlin,很难受

2021-07-20 22:59:35 +08:00
 huyujievip

事情是这样子的

目前大三在在公司实习,服务端研发,部门的项目目前接触到的都是 Java 和 Kotlin 混用,而且使用 Kotlin 居多

今天老大丢给我一个线上的小缺陷,要我查出来修复,Kotlin 的代码看的那叫一个酸爽

数据的处理流程很长,经常是一个方法里面异步调用完一个微服务拿到流,直接 return 一个几十行的 lambda 表达式,主要处理逻辑放在 return 的 lambda 表达式里面。不知道说没说清楚,反正看了一天都给我整懵了,感觉和之前自己写的 Java 方法有很大出入(一般都是在方法体里面完成处理逻辑嘛,然后 return 返回处理后结果)

目前想请教一下各位大虾有没有快速入门 kt 的建议

然后还有个疑惑,作为 Java 小白,未来是想往 Java 方向发展的,目前也在准备秋招,实习的话因为公司需要还是会学习 Kotlin 的一些基础用法,但是如果重心放在 Kotlin 会不会不太明智

4937 次点击
所在节点    Java
36 条回复
kidlj
2021-07-20 23:13:22 +08:00
都学。等你工作几年多接触一些语言就会发现,别说 Kotlin 和 Java 了,就是 Swift 和 Java 也没大区别。
oneisall8955
2021-07-20 23:14:20 +08:00
哈哈哈哈想起刚刚毕业看到大佬写的一个方法最后 return 一句 lambda 表达式 20 来行,震惊一整年。其实也没有很复杂后来熟练了就 stream 的 flatMap,map,filter,peek,collect 而已
Leviathann
2021-07-20 23:14:50 +08:00
stream api 用的比较习惯的话应该还行吧
kotlin 标准库里各种工具函数和 5 个作用域方法真的挺爽的
huyujievip
2021-07-20 23:20:14 +08:00
@oneisall8955 对对对就是这玩意,我太菜了哈哈哈哈哈,得好好学学

@kidlj 感谢老哥的建议

@Leviathann 之前自己练习的项目基本上来说没有用过 stream,接触到的也是一些基础的 filter 、map,这一块还得好好练练,谢谢建议
charlie21
2021-07-20 23:21:50 +08:00
如果所增加的宝贵 debug 技能都是在体会何为历史遗留问题的过程中获取的,那么它的可迁移度就是一个未知数了
echo1937
2021-07-21 00:22:57 +08:00
@oneisall8955 我自己也写 20 几行的 stream api,自己也觉得很不利于调试和理解,但是一想这个用普通的法子来写,一样也是不好理解,一层套一层循环真的要死人。
Leviathann
2021-07-21 00:30:52 +08:00
@huyujievip 平时 crud 几乎没写过 for,都是 stream,除了一些要提前 return 的地方
刚开始的话多写就习惯了
HarryQu
2021-07-21 00:32:16 +08:00
Kotlin 的书籍我看了两本:
1. 《 Kotlin 核心编程》 - 水滴技术团队
2. 《 Kotlin 从入门到进阶实战》

两本书都可以快速入门,但你细看这两本书或者看第三方博客,你就会发现别人在介绍 Kotlin 的时候,都会或多或少去和 Java 做对比。会将 Kotlin 编译为字节码,再反编译查看 Java 的实现。

所以 Java 是基础,Java 掌握的基础越好,Kotlin 学习的越快。

如果你 Java 水平有欠缺的话,Kotlin 你也仅仅局限在调用 API 的角度。

Kotlin 号称 100% 兼容 Java,所以你要把 Kotlin 当做一面镜子,看到 Kotlin 花里胡哨的语法糖,你要反过来想想 Java 的实现。看到啰嗦的 Java 代码,你要想到简洁的 Kotlin 写法。这样无论 Java 水平还是 Kotlin 水平都能快速进步。
aabbcc112233
2021-07-21 00:46:52 +08:00
我现在项目也是混写,但是非常不想用 java 了,能用 kt 就 kt 。日常还要写 dart,偶尔要写 js 。说实话,有点混乱了,经常需要搜索。
huyujievip
2021-07-21 06:01:40 +08:00
@Leviathann 认为 steam 是比较高阶的用法,之前写的确实不多,现在发现项目中基本就是用这玩意,要认真学习啦
@HarryQu 感谢老哥建议,已经下单了,结合视频好好学习
wellsc
2021-07-21 06:50:34 +08:00
语言不就是工具
araraloren
2021-07-21 09:26:06 +08:00
@wellsc 然后呢. 那不学就能会吗?
wellsc
2021-07-21 09:37:37 +08:00
@araraloren 不学吗?谁说的呢
CallMeReznov
2021-07-21 09:49:21 +08:00
早点接受一个事实,那就是:卷起来.
kidcats
2021-07-21 09:55:58 +08:00
哪个公司,插个眼,回头去写 kotlin
wzzzx
2021-07-21 09:56:27 +08:00
语言只是工具~
Cy1
2021-07-21 10:20:04 +08:00
我觉得你只是单纯的对 lambda 和 stream api 不熟练而已,跟 Kotlin 没关系。
顺便一说,我都怀疑你是另一个我。我当时也是实习的时候开始学 kt, 而且公司也 Java 和 Kt 混编,旧代码 Java 为主,新代码 Kt 为主。
其实 Kt 并不影响你向 Java 的方法,在我看来,Kt 就是 Java 一个封装的比较好的包而已。
wellsc
2021-07-21 10:44:36 +08:00
@CallMeReznov 用语法糖更多的 kotlin 和卷有几分钱关系呢,别鹦鹉学舌好吧
junbaor
2021-07-21 11:14:53 +08:00
这才是 jdk8 普及以后的真实样子
pigspy
2021-07-21 11:48:41 +08:00
这种做法我觉得不太好,流的可读性并不高

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

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

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

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

© 2021 V2EX