300

写了三周的 kotlin 了

  •  
  •   300 · Aug 11, 2019 · 4200 views
    This topic created in 2606 days ago, the information mentioned may be changed or developed.
    莫名其妙,本来在重构之前的项目呢,写了 2/5 了已经,突然说第二天开始要全部转成 kotlin

    之前的项目是 java 混 kotlin,MVC+MVP+MVVM+随心所欲模式,真的是...一个控件满世界都在改

    就这样稀里糊涂写了三个星期了

    感受:语法不是问题,很快就上手了(反正无脑直接先转了再说)。高级语法掌握的不多,一般都是看别人源码或者偶然间网上看到的
    刚开始最受不了的是 AS 的代码补全反应太慢了,等它提示出来,我都能敲完了。习惯了 Java 时 xxx + alt + enter 的顺畅遇到这种真是很抓狂
    另一个不习惯的就是没有三目运算符,非得套个 if else。要说完全就没这个语法吧,也不对,不还有个 ?: 吗
    说到这个 ?,刚开始也困惑了好久,后来才搞明白和 !! 的区别,当时还吐槽了为什么会出现 NPE。。


    从代码量上来看,Java 和 kotlin 差距不不是很大。不如加一个 lib 来的明显,比如 普通的 RecyclerView adapter,换上 BRVAH 后代码可能削减到十分之一。还有一部分是因为逻辑上的优化(之前写的太 SHI 了)
    kotlin 主要少写了 if null 和导入控件 ID。if null 全靠编译器去写了。控件的 ID 省得先初始化了,而且可以一个中键直接定位到 xml。
    整体上 kotlin 看起比 Java 简洁不少,不过可能是逻辑依然乱,或者我水平不够。看起来任然有种不协调的感觉


    以上仅个人看法,用的不多,难以全面体验
    12 replies  •  2020-10-16 21:25:53 +08:00
    bkmi
        1
    bkmi  
       Aug 11, 2019   ❤️ 1
    还觉得 Kotlin 和 Java 差不多,说明高级特性用的还比较少,高阶函数,方法 /属性 扩展,属性委托,慢慢用起来。
    st2udio
        2
    st2udio  
       Aug 11, 2019   ❤️ 1
    我觉得单一个 扩展 就能省掉好多代码了
    hyyou2010
        3
    hyyou2010  
       Aug 11, 2019   ❤️ 1
    能防止空指针就值。
    kx5d62Jn1J9MjoXP
        4
    kx5d62Jn1J9MjoXP  
       Aug 11, 2019 via iPad   ❤️ 1
    Null safety 和代码提示速度,我选择了代码提示🙂,kotlin 实在太卡了,不知道它的爱好者们用的什么配置的电脑
    300
        5
    300  
    OP
       Aug 12, 2019 via Android
    @bkmi 1 #目前是尽快完成重构,最主要是不能出问题,所以没空搞得太高端。。


    @st2udio 2#啥( ∵ )

    @ssynhtn 4# 还是流畅是首选,不然改 bug 都心累。
    loveuqian
        6
    loveuqian  
       Aug 12, 2019 via iPhone   ❤️ 1
    那看起来就跟 oc 和 swift 的差别差不多
    当初刚学时也是强行把 oc 翻译成 swift 而已
    ntdll
        7
    ntdll  
       Aug 12, 2019   ❤️ 1
    简单的看,可以认为 Kotlin 是 Java 的胶水。毕竟都是跑在 JVM 上的,本质上没有什么区别。但是 Kotlin 提供了大量的胶水特性。比如对于 Closable 对象直接使用.use{},不再需要手动关闭对象。
    filter/map/let/apply 的组合使用,可以让代码高度简洁(同样需要对代码高度了解,不然根本不知道返回了什么东西)

    总之,要没用过 Kotlin 呢,Java 也很不错。用过了,这些胶水特性,至少我是回不去,新开项目一律 Kotlin。语法糖是语法糖,但是甜啊。
    300
        8
    300  
    OP
       Aug 12, 2019 via Android
    @gam2046 我一直都把 kotlin 当成语法糖。。x
    jiqingke
        9
    jiqingke  
       Aug 12, 2019   ❤️ 1
    为啥没人提到 kotlin 的协程呢
    kingfalse
        10
    kingfalse  
       Aug 12, 2019   ❤️ 1
    我一直拿 Kotlin 写爬虫,分享下自己的小包,可以更简单的使用多协程 /线程。
    https://github.com/KingFalse/harrier
    <dependency>
    <groupId>me.kagura</groupId>
    <artifactId>harrier</artifactId>
    <version>1.1</version>
    </dependency>
    300
        11
    300  
    OP
       Aug 12, 2019 via Android
    @jiqingke 暂时没用到


    @kingfalse 单独发一贴吧,在这里没人看到的。
    no13bus
        12
    no13bus  
       Oct 16, 2020
    if else 可以使用 when
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2633 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 15:18 · PVG 23:18 · LAX 08:18 · JFK 11:18
    ♥ Do have faith in what you're doing.