实习生,公司项目 Java Kotlin 混用, Java 套路都没摸清,就要学 Kotlin,很难受 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
502Chef
V2EX    Java

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

  •  
  •   502Chef 2021 年 7 月 20 日 5813 次点击
    这是一个创建于 1728 天前的主题,其中的信息可能已经有所发展或是发生改变。

    事情是这样子的

    目前大三在在公司实习,服务端研发,部门的项目目前接触到的都是 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 年 7 月 20 日
    都学。等你工作几年多接触一些语言就会发现,别说 Kotlin 和 Java 了,就是 Swift 和 Java 也没大区别。
    itechify
        2
    itechify  
    PRO
       2021 年 7 月 20 日 via Android
    哈哈哈哈想起刚刚毕业看到大佬写的一个方法最后 return 一句 lambda 表达式 20 来行,震惊一整年。其实也没有很复杂后来熟练了就 stream 的 flatMap,map,filter,peek,collect 而已
    Leviathann
        3
    Leviathann  
       2021 年 7 月 20 日
    stream api 用的比较习惯的话应该还行吧
    kotlin 标准库里各种工具函数和 5 个作用域方法真的挺爽的
    502Chef
        4
    502Chef  
    OP
       2021 年 7 月 20 日
    @oneisall8955 对对对就是这玩意,我太菜了哈哈哈哈哈,得好好学学

    @kidlj 感谢老哥的建议

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

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

    也可以将 pdf 版本导入到微信读书上看。
    Ionian
        28
    Ionian  
       2021 年 7 月 21 日
    楼主哪个厂,服务端好像很少见到用 kotlin 的
    MidCoder
        29
    MidCoder  
       2021 年 7 月 21 日
    @huyujievip 加 VX:bieber-cn
    iovekkk
        30
    iovekkk  
       2021 年 7 月 21 日
    讲真的这是好事,能在工作中实践新技术是非常好的,说明公司技术氛围也好
    不像我们公司,保守求稳,什么新技术都不用
    EscYezi
        31
    EscYezi  
       2021 年 7 月 21 日 via iPhone
    我也想用 kotlin
    502Chef
        32
    502Chef  
    OP
       2021 年 7 月 21 日 via iPhone
    @HarryQu 不太喜欢电子书,用电子设备的话可能会忍不住玩手机
    @iovekkk 看来是围城,哈哈哈哈
    sprite82
        33
    sprite82  
       2021 年 7 月 22 日
    又看到语言工具学说,一门语言虽然基础部分 1 周之内就能学会,但是相关的配套工具,类库都要掌握,如果语言有不同的特性还要考虑内在实现 优化方向等 。人的精力是有限的,这些都是潜在的时间、精力成本
    zoharSoul
        34
    zoharSoul  
       2021 年 7 月 22 日
    函数式就这样
    unbright
        35
    unbright  
       2021 年 8 月 4 日
    还有这好事
    CallMeReznov
        36
    CallMeReznov  
       2021 年 8 月 22 日
    @wellsc #18
    我的意思是让楼主两门都学努力加强自己加入"卷"的大军,属于一种半开玩笑的激励话.
    我是不懂为什么到你这里成了你这种理解.
    更不理解竟然还被人单独 @出来说.
    哥们戾气有点重啊!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3554 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 11:45 PVG 19:45 LAX 04:45 JFK 07:45
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86