事情是这样子的
目前大三在在公司实习,服务端研发,部门的项目目前接触到的都是 Java 和 Kotlin 混用,而且使用 Kotlin 居多
今天老大丢给我一个线上的小缺陷,要我查出来修复,Kotlin 的代码看的那叫一个酸爽
数据的处理流程很长,经常是一个方法里面异步调用完一个微服务拿到流,直接 return 一个几十行的 lambda 表达式,主要处理逻辑放在 return 的 lambda 表达式里面。不知道说没说清楚,反正看了一天都给我整懵了,感觉和之前自己写的 Java 方法有很大出入(一般都是在方法体里面完成处理逻辑嘛,然后 return 返回处理后结果)
目前想请教一下各位大虾有没有快速入门 kt 的建议
然后还有个疑惑,作为 Java 小白,未来是想往 Java 方向发展的,目前也在准备秋招,实习的话因为公司需要还是会学习 Kotlin 的一些基础用法,但是如果重心放在 Kotlin 会不会不太明智
1
kidlj 2021-07-20 23:13:22 +08:00
都学。等你工作几年多接触一些语言就会发现,别说 Kotlin 和 Java 了,就是 Swift 和 Java 也没大区别。
|
2
oneisall8955 2021-07-20 23:14:20 +08:00 via Android
哈哈哈哈想起刚刚毕业看到大佬写的一个方法最后 return 一句 lambda 表达式 20 来行,震惊一整年。其实也没有很复杂后来熟练了就 stream 的 flatMap,map,filter,peek,collect 而已
|
3
Leviathann 2021-07-20 23:14:50 +08:00
stream api 用的比较习惯的话应该还行吧
kotlin 标准库里各种工具函数和 5 个作用域方法真的挺爽的 |
4
huyujievip OP @oneisall8955 对对对就是这玩意,我太菜了哈哈哈哈哈,得好好学学
@kidlj 感谢老哥的建议 @Leviathann 之前自己练习的项目基本上来说没有用过 stream,接触到的也是一些基础的 filter 、map,这一块还得好好练练,谢谢建议 |
5
charlie21 2021-07-20 23:21:50 +08:00
如果所增加的宝贵 debug 技能都是在体会何为历史遗留问题的过程中获取的,那么它的可迁移度就是一个未知数了
|
6
echo1937 2021-07-21 00:22:57 +08:00 via iPhone
@oneisall8955 我自己也写 20 几行的 stream api,自己也觉得很不利于调试和理解,但是一想这个用普通的法子来写,一样也是不好理解,一层套一层循环真的要死人。
|
7
Leviathann 2021-07-21 00:30:52 +08:00
@huyujievip 平时 crud 几乎没写过 for,都是 stream,除了一些要提前 return 的地方
刚开始的话多写就习惯了 |
8
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 水平都能快速进步。 |
9
aabbcc112233 2021-07-21 00:46:52 +08:00 via Android
我现在项目也是混写,但是非常不想用 java 了,能用 kt 就 kt 。日常还要写 dart,偶尔要写 js 。说实话,有点混乱了,经常需要搜索。
|
10
huyujievip OP |
11
wellsc 2021-07-21 06:50:34 +08:00 via iPhone
语言不就是工具
|
12
araraloren 2021-07-21 09:26:06 +08:00
@wellsc 然后呢. 那不学就能会吗?
|
13
wellsc 2021-07-21 09:37:37 +08:00
@araraloren 不学吗?谁说的呢
|
14
CallMeReznov 2021-07-21 09:49:21 +08:00
早点接受一个事实,那就是:卷起来.
|
15
kidcats 2021-07-21 09:55:58 +08:00
哪个公司,插个眼,回头去写 kotlin
|
16
wzzzx 2021-07-21 09:56:27 +08:00
语言只是工具~
|
17
Cy1 2021-07-21 10:20:04 +08:00
我觉得你只是单纯的对 lambda 和 stream api 不熟练而已,跟 Kotlin 没关系。
顺便一说,我都怀疑你是另一个我。我当时也是实习的时候开始学 kt, 而且公司也 Java 和 Kt 混编,旧代码 Java 为主,新代码 Kt 为主。 其实 Kt 并不影响你向 Java 的方法,在我看来,Kt 就是 Java 一个封装的比较好的包而已。 |
18
wellsc 2021-07-21 10:44:36 +08:00
@CallMeReznov 用语法糖更多的 kotlin 和卷有几分钱关系呢,别鹦鹉学舌好吧
|
19
junbaor 2021-07-21 11:14:53 +08:00
这才是 jdk8 普及以后的真实样子
|
20
pigspy 2021-07-21 11:48:41 +08:00 via Android
这种做法我觉得不太好,流的可读性并不高
|
21
huyujievip OP |
22
zmxnv123 2021-07-21 12:42:12 +08:00 via iPhone
Java +kotlin 可以了
要是被别人甩过来一堆 cpp 才是真的艹 |
23
MidCoder 2021-07-21 13:34:17 +08:00
来我们这里,100%面向 java 开发
|
24
speedofstephen 2021-07-21 13:38:14 +08:00 1
《写给大忙人看的 Java8 》我觉得这本书对 lambda 表达式的讲解蛮详细的
|
25
huyujievip OP @MidCoder 内推嘛老哥🐶
|
26
huyujievip OP @speedofstephen 谢谢建议
|
27
HarryQu 2021-07-21 15:29:17 +08:00
|
28
Ionian 2021-07-21 15:41:09 +08:00
楼主哪个厂,服务端好像很少见到用 kotlin 的
|
29
MidCoder 2021-07-21 17:43:03 +08:00
@huyujievip 加 VX:bieber-cn
|
30
iovekkk 2021-07-21 17:52:20 +08:00
讲真的这是好事,能在工作中实践新技术是非常好的,说明公司技术氛围也好
不像我们公司,保守求稳,什么新技术都不用 |
31
EscYezi 2021-07-21 18:14:10 +08:00 via iPhone
我也想用 kotlin🌚
|
32
huyujievip OP |
33
sprite82 2021-07-22 14:16:23 +08:00
又看到语言工具学说,一门语言虽然基础部分 1 周之内就能学会,但是相关的配套工具,类库都要掌握,如果语言有不同的特性还要考虑内在实现 优化方向等 。人的精力是有限的,这些都是潜在的时间、精力成本
|
34
zoharSoul 2021-07-22 16:41:44 +08:00
函数式就这样
|
35
unbright 2021-08-04 10:59:20 +08:00
还有这好事
|
36
CallMeReznov 2021-08-22 13:43:28 +08:00
@wellsc #18
我的意思是让楼主两门都学努力加强自己加入"卷"的大军,属于一种半开玩笑的激励话. 我是不懂为什么到你这里成了你这种理解. 更不理解竟然还被人单独 @出来说. 哥们戾气有点重啊! |