Duolingo如何将其Android应用迁移到100%Kotlin

在过去的两年中,Duolingo无缝地将其Java Android应用程序迁移到100%Kotlin。在此带来的主要好处中,开发人员提高了工作效率和满意度,而Duolingo应用程序几乎免费获得了空指针异常(NPE)。下面是与Duolingo Android和网络开发负责人Art Chaidarun的对话,以了解有关他们的经验的更多信息。

自从Google使Kotlin成为Android开发的首选语言以来,JetBrains的语言就凭借其现代功能集吸引了越来越多的开发人员兴趣。成功的语言学习平台制造商Duolingo 决定于2018年迁移到Kotlin进行Android开发,以提高生产力,稳定性和开发人员满意度。

正如Duolingo Android和Web开发负责人Art Chaidarun解释的那样,向Kotlin的过渡始于每个开发人员获取一些Java代码以移植到Kotlin并为更有经验的Kotlin开发人员分配指导角色。特别值得一提的是Duolingo工程师定义的拉动请求工作流程,以使向Kotlin的转换尽可能容易地进行管理。具体来说,对于每个转换后的源文件,开发人员都需要生成一个包含至少三个提交的拉取请求:一个包含IntelliJ自动转换的结果;另一个包含IntelliJ自动转换的结果。第二次提交包含对自动转换引入的任何编译错误的修复;第三次提交,进行了更改,以使代码更加惯用。

根据Chaidarun的说法,转换为Kotlin可使行数减少30%左右,峰值达到90%。 最终,Duolingo应用程序的稳定性得到了极大的改善,并且大多数NullPointerExceptionsIllegalArgumentExceptions来自第三方依赖关系,这些第三方依赖关系未为Kotlin编译器采用可空性注释。 下面是与Chaidarun的交谈,以了解更多有关其经验的信息。

将应用程序迁移到其他语言是一项巨大的努力。您能否找出最有助于成功的关键实践?

Art Chaidarun:最大的因素是语言的选择:Kotlin与Java的相似之处意味着开发人员既容易学习,也易于IDE自动从Java转换。例如,对于将Java转换为Scala或将Objective-C转换为Swift而言,这种说法就不那么正确了。同样重要的是,我们从一开始就在Java和Kotlin之间建立了工具奇偶校验(格式化程序和linters),这加强了一致性并降低了转换成本。

从Java到Kotlin的自动转换您的经验如何?您遇到的最经常性的问题是?

Chaidarun:IntelliJ的自动转换器对这项工作至关重要-如果不存在,我们甚至可能没有尝试过迁移。它非常安全,仅在与反射相关的极少数情况下才导致运行时问题。最常见的问题是,我们必须手动添加@JvmField@JvmStatic批注到转换后的代码中才能与Java调用程序兼容,这很容易做到。

您能总结一下提高开发人员满意度的主要因素吗?

Chaidarun:与Java相比,属性,数据类和标准库扩展方法之类的功能极大地提高了Kotlin的信噪比,使代码的编写和审核变得更加轻松快捷。

如果您对完整的细节感兴趣,请不要错过Duolingo博客上的Chaidarun报告。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值