V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
huyujievip
V2EX  ›  Java

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

  •  
  •   huyujievip · 2021-07-20 22:59:35 +08:00 · 4594 次点击
    这是一个创建于 1003 天前的主题,其中的信息可能已经有所发展或是发生改变。

    事情是这样子的

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

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

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

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

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

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

    @kidlj 感谢老哥的建议

    @Leviathann 之前自己练习的项目基本上来说没有用过 stream,接触到的也是一些基础的 filter 、map,这一块还得好好练练,谢谢建议
    charlie21
        5
    charlie21  
       2021-07-20 23:21:50 +08:00
    如果所增加的宝贵 debug 技能都是在体会何为历史遗留问题的过程中获取的,那么它的可迁移度就是一个未知数了
    echo1937
        6
    echo1937  
       2021-07-21 00:22:57 +08:00 via iPhone
    @oneisall8955 我自己也写 20 几行的 stream api,自己也觉得很不利于调试和理解,但是一想这个用普通的法子来写,一样也是不好理解,一层套一层循环真的要死人。
    Leviathann
        7
    Leviathann  
       2021-07-21 00:30:52 +08:00
    @huyujievip 平时 crud 几乎没写过 for,都是 stream,除了一些要提前 return 的地方
    刚开始的话多写就习惯了
    HarryQu
        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 水平都能快速进步。
    aabbcc112233
        9
    aabbcc112233  
       2021-07-21 00:46:52 +08:00 via Android
    我现在项目也是混写,但是非常不想用 java 了,能用 kt 就 kt 。日常还要写 dart,偶尔要写 js 。说实话,有点混乱了,经常需要搜索。
    huyujievip
        10
    huyujievip  
    OP
       2021-07-21 06:01:40 +08:00
    @Leviathann 认为 steam 是比较高阶的用法,之前写的确实不多,现在发现项目中基本就是用这玩意,要认真学习啦
    @HarryQu 感谢老哥建议,已经下单了,结合视频好好学习
    wellsc
        11
    wellsc  
       2021-07-21 06:50:34 +08:00 via iPhone
    语言不就是工具
    araraloren
        12
    araraloren  
       2021-07-21 09:26:06 +08:00
    @wellsc 然后呢. 那不学就能会吗?
    wellsc
        13
    wellsc  
       2021-07-21 09:37:37 +08:00
    @araraloren 不学吗?谁说的呢
    CallMeReznov
        14
    CallMeReznov  
       2021-07-21 09:49:21 +08:00
    早点接受一个事实,那就是:卷起来.
    kidcats
        15
    kidcats  
       2021-07-21 09:55:58 +08:00
    哪个公司,插个眼,回头去写 kotlin
    wzzzx
        16
    wzzzx  
       2021-07-21 09:56:27 +08:00
    语言只是工具~
    Cy1
        17
    Cy1  
       2021-07-21 10:20:04 +08:00
    我觉得你只是单纯的对 lambda 和 stream api 不熟练而已,跟 Kotlin 没关系。
    顺便一说,我都怀疑你是另一个我。我当时也是实习的时候开始学 kt, 而且公司也 Java 和 Kt 混编,旧代码 Java 为主,新代码 Kt 为主。
    其实 Kt 并不影响你向 Java 的方法,在我看来,Kt 就是 Java 一个封装的比较好的包而已。
    wellsc
        18
    wellsc  
       2021-07-21 10:44:36 +08:00
    @CallMeReznov 用语法糖更多的 kotlin 和卷有几分钱关系呢,别鹦鹉学舌好吧
    junbaor
        19
    junbaor  
       2021-07-21 11:14:53 +08:00
    这才是 jdk8 普及以后的真实样子
    pigspy
        20
    pigspy  
       2021-07-21 11:48:41 +08:00 via Android
    这种做法我觉得不太好,流的可读性并不高
    huyujievip
        21
    huyujievip  
    OP
       2021-07-21 11:50:47 +08:00 via iPhone
    @Cy1 是的,说到点上了,lambda 和 stream 基本不咋会,因为之前没有刻意练习过
    看 Kotlin 代码,处理逻辑还是能看懂的,写就不会了
    两方面都得好好学习
    zmxnv123
        22
    zmxnv123  
       2021-07-21 12:42:12 +08:00 via iPhone
    Java +kotlin 可以了
    要是被别人甩过来一堆 cpp 才是真的艹
    MidCoder
        23
    MidCoder  
       2021-07-21 13:34:17 +08:00
    来我们这里,100%面向 java 开发
    speedofstephen
        24
    speedofstephen  
       2021-07-21 13:38:14 +08:00   ❤️ 1
    《写给大忙人看的 Java8 》我觉得这本书对 lambda 表达式的讲解蛮详细的
    huyujievip
        25
    huyujievip  
    OP
       2021-07-21 14:46:35 +08:00
    @MidCoder 内推嘛老哥🐶
    huyujievip
        26
    huyujievip  
    OP
       2021-07-21 14:46:47 +08:00
    @speedofstephen 谢谢建议
    HarryQu
        27
    HarryQu  
       2021-07-21 15:29:17 +08:00
    @huyujievip

    下单?我比较喜欢电子书,这两本书,一本可以在京东读书上,一本可以在微信读书上看。

    也可以将 pdf 版本导入到微信读书上看。
    Ionian
        28
    Ionian  
       2021-07-21 15:41:09 +08:00
    楼主哪个厂,服务端好像很少见到用 kotlin 的
    MidCoder
        29
    MidCoder  
       2021-07-21 17:43:03 +08:00
    @huyujievip 加 VX:bieber-cn
    iovekkk
        30
    iovekkk  
       2021-07-21 17:52:20 +08:00
    讲真的这是好事,能在工作中实践新技术是非常好的,说明公司技术氛围也好
    不像我们公司,保守求稳,什么新技术都不用
    EscYezi
        31
    EscYezi  
       2021-07-21 18:14:10 +08:00 via iPhone
    我也想用 kotlin🌚
    huyujievip
        32
    huyujievip  
    OP
       2021-07-21 19:50:07 +08:00 via iPhone
    @HarryQu 不太喜欢电子书,用电子设备的话可能会忍不住玩手机
    @iovekkk 看来是围城,哈哈哈哈
    sprite82
        33
    sprite82  
       2021-07-22 14:16:23 +08:00
    又看到语言工具学说,一门语言虽然基础部分 1 周之内就能学会,但是相关的配套工具,类库都要掌握,如果语言有不同的特性还要考虑内在实现 优化方向等 。人的精力是有限的,这些都是潜在的时间、精力成本
    zoharSoul
        34
    zoharSoul  
       2021-07-22 16:41:44 +08:00
    函数式就这样
    unbright
        35
    unbright  
       2021-08-04 10:59:20 +08:00
    还有这好事
    CallMeReznov
        36
    CallMeReznov  
       2021-08-22 13:43:28 +08:00
    @wellsc #18
    我的意思是让楼主两门都学努力加强自己加入"卷"的大军,属于一种半开玩笑的激励话.
    我是不懂为什么到你这里成了你这种理解.
    更不理解竟然还被人单独 @出来说.
    哥们戾气有点重啊!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4707 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:00 · PVG 18:00 · LAX 03:00 · JFK 06:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.