关于android:功能更强代码和错误更少Duolingo-和-Google-Home-的-Kotlin-之旅

2次阅读

共计 2333 个字符,预计需要花费 6 分钟才能阅读完成。

利用大受欢迎,团队必定备受鼓励,于是决定把最棒的创意和性能增加进利用中,而后用户们会更加称心,如此循环……然而如此美好的图景在事实中会遇到 “ 事实的问题 ”:

  • 代码量陡增,以及随之而来的开发和保护老本
  • 代码中的谬误也随之减少,进而造成利用的解体数量减少

让咱们看看 Duolingo 和 Google Home 是如何解决这些问题的。

从 Kotlin “ 检查员 ” 到 “ 专家 ”

Duolingo 是世界上最受欢迎的语言学习平台之一,也是 Google Play 上下载量最高的收费教育利用之一 (已冲破 2 亿),为超过 3 亿名学习者提供可收费应用的语言学习服务。

随着利用本身的演进,Duolingo 的 Android 开发者发现代码库的代码行数每年增长 46% 之多!为彻底解决这个问题,团队最终统一决定从 Java 迁徙至 Kotlin。

该团队发挥了真正的 Duolingo 格调,通过发展每日排行榜比赛并激励学习,让迁徙过程充斥游戏乐趣 (没错,和他们在 Duolingo 利用中引入的游戏化思维一模一样)。该团队中经验丰富的 Kotlin 开发者负责 “Kotlin 检查员 ” 角色,并分享代码审核方面的最佳做法,最终该团队的所有 Android 开发者都成为了 Kotlin 专家。

代码量均匀缩小 30%

两年后,Duolingo 团队实现了迁徙工作,代码的可维护性失去显著晋升。他们发现, 将 Java 文件转换为 Kotlin 文件后,代码行数均匀缩小了 30%,某些状况下高达 90%

△ Duolingo 代码量随工夫的变动,绿色为 Kotlin

  • 团队博客: 将 Duolingo 的 Android 100% 迁徙至 Kotlin

总体而言,在迁徙到 Kotlin 后,咱们十分称心,也很快乐看到 Kotlin 在咱们公司和整个软件行业中的使用率一直增长!

—— Art Chaidarun,资深高级软件工程师

只管有了新的产品性能,沉闷贡献者的数量减少了一倍以上,但他们的代码库规模简直与两年前未迁徙时一样,这证实这一决策带来了不错的投资收益。此外,外部问卷调查显示他们的  NPS 晋升了 129 个点,开发者满意度跃升 ,开发者认为是采纳 Kotlin 起到了次要作用。当初,他们的 Android 利用齐全应用 Kotlin 代码库,这让他们能够更加释怀、高效地发展工作。

Google Home 逐渐引入 Kotlin

Google Home 利用 可帮忙您设置、治理和管制您的 Google Home、Google Nest 和 Chromecast 设施以及数千种智能互联家居产品 (如灯具、摄像头、恒温器等等)。其背地的工程团队应用 Kotlin 和 Android Jetpack 库来晋升工程生产力和开发者满意度,这让他们受害良多。

团队决定将 Kotlin 整合到代码库中,以晋升编程效率,并应用古代语言性能 (如 var/val、智能投射、协程等)。 截至 2020 年 6 月,30% 左右的代码库是应用 Kotlin 编写的 ,且倡议应用 Kotlin 来开发所有新性能。

该团队还采纳 Jetpack 库来进步开发者的速度、升高对样板代码保护的需要并缩小代码量。Jetpack 库还有助于进步代码的可测试性,因为有更清晰的性能边界和 API。

最常见的解体直降 33%

Kotlin 可助您进步工作效率,让您编写更少的代码来实现更多的性能,这就是您可实现的 “ 速度 ” 晋升。

—— Jared Burrows,Google Home 的软件工程师

与等效的现有 Java 代码相比,改用 Kotlin 能够缩小所需的代码量。例如,应用数据类和 Parcelize 插件:  一个在应用 Java 时须要手动编写 126 行代码的类,当初应用 Kotlin 只需编写 23 行,代码量减少了 80%。此外,还能够主动生成并及时更新平衡和解析办法。应用 Kotlin 中提供的实用办法,还能够简化许多嵌套循环和过滤查看。

因为 Kotlin 能够将是否可为 null 作为语言的一部分,因而能够防止辣手的状况,例如在 Java 中不统一地应用是否可为 null 正文可能会导致脱漏谬误。实现 Kotlin 后,Google Home 利用团队遇到的 NullPointerExceptions 缩小了 33%。这是 Google Play 管理中心中最常见的解体类型,因而缩小此类解体能够显著晋升用户体验。

对于 Google Home 这样的大型成熟利用 (代码超过数百万行),可能逐渐增加 Jetpack 库会很有帮忙。纳入这些库后,该团队能够整合并替换量身定制的解决方案,有时甚至只须要一个库。Jetpack 库可帮忙工程师遵循最佳做法,并且编写更简洁的代码 (例如,应用 Room 或 ConstraintLayout),因而可读性也有所提高。该团队将许多新的 Jetpack 库视为 “ 必备库 ”,包含 ViewModel 和 LiveData,它们在 Google Home 代码库中失去宽泛应用。

Google Home 利用团队发现将 Jetpack KTX 与 Kotlin 协程集成特地有用。该团队当初能够将协程与生命周期感知型组件 (如 ViewModel) 联合应用,从而防止简单的异步编程谬误。

上手 Kotlin,当初就是最佳时机

正如 Google Home 团队所说的,Kotlin 能够逐渐增加进现有的我的项目,并带来更简洁的代码和更少的谬误。因为 Jetpack 中诸如 Paging 3 等开发库曾经优先应用 Kotlin 进行了重写,再加上正在热火朝天开发的 Jetpack Compose,开发者们在为利用构建界面、实现性能的时候会愈发事倍功半。

咱们最近刚刚公布了 Kotlin 1.4,其中引入的诸多全新语言个性改善了编写 Kotlin 代码的 “ 人机工程学 ”,更通过对编译器的改良晋升了其整体品质和性能。

当初就是上手 Kotlin 的最佳时机,咱们曾经为您筹备了 全新的课程,助力您开启 Kotlin 开发之旅。

正文完
 0