Kotlin 初尝之项目实践总结

前言

记不清什么时候翻 Android 官方文档的时候,发现提供的示例代码已经变成了 Kotlin...

逛全球最大同性交友网站( GitHub )也发现越来越多的开源库都是基于 Kotlin 语言...

关于 Kotlin 的相关书籍和资料也开始丰富起来了...

Kotlin,一个神奇的网站...呸...是一个面向 JVM 的静态开发语言,16年推出 1.0 Release 版本,17年被 Google 宣布为 Android 官方开发语言,以及即将到来的 18 年全球开发者大会...

以上这些种种迹象让我从之前的观望态度,开始对 Kotlin 再一次充满了好奇以及跃跃欲试 。

于是,最近在时间允许的情况下,尝试着把项目中某个模块通过 Kotlin 去重写,结果和吃了炫迈一样,发现根本停不下来,直接把整个工程的 Java 代码全部重写成了 Kotlin,最后连 Gradle 的构建脚本语言也被切换到了 Kotlin DSL 上。

嗯,Kotlin 果然有毒...

关于项目

因为这个项目的业务功能不是很复杂,本次实践就直接把项目中的 Java 代码全部用 Kotlin 重写了一遍,我们看下主要包含的功能模块:

  • 登录功能
  • 消息中心
  • 统一容器(H5、Weex 容器)
  • 社交分享功能
  • 扫码功能

可以看到该 App 偏向于端容器,主要业务都是使用的 H5 和 Weex 页面所写,而Natvie 上的业务不是很复杂。

需要说明的一点是,本次重写不是直接通过工具对原有 Java 类文件进行转换到 Kotlin,虽然 Kotlin 插件提供了这样的功能,但是不推荐大家去这样操作,因为实际转换的过程当中,它并不能很好发挥 Kotlin 真正的强大之处,比如转换之后, 你可能会看到大量的 ?!! 符号, 这是由于 Kotlin 空安全的特性引起,还有一个就是你在重写的时候,也相当于去重构了一遍你之前的代码或者别人的代码,可以很好的帮助你去理解和优化之前的代码逻辑,也会删除了很多无用类和代码,亲测非常有用,而且投入的时间也不多。

实践总结

关于如何在原有的 Android 项目中使用 Kotlin,官方已经提供很详细的指导文档,简单说下,分为两步:

  1. 升级 Android Studio 到 3.0 版本以上
  2. 添加 Kotlin Plugin 插件和 Kotlin 依赖库

重写前后对比

  • 关于包大小,因为需要引入 Kotlin 的依赖库,所以增加大概 60 KB 的大小,按照现在 Apk 的体量,几乎可以忽略不计。

  • 代码量减少 30%

其他的好处

  • 代码简洁

      //一行代码搞定 POJO 类,同时具有 `getter, settting,  toString ` 等方法
      data class User(val name: String,
                        val sex: String,
                        val email: String,
                        val age: String) 
    复制代码
  • 扩展函数替代了很多 Utils 类

  • 告别 findViewById,比 ButterKnife 更好用

      import kotlinx.android.synthetic.main.view_toolbar.*
    
      open class WebContainerActivity : BaseActivity() {
    
    
          override fun onCreate(savedInstanceState: Bundle?) {
              super.onCreate(savedInstanceState)
              setContentView(R.layout.activity_web_page)
    
              toolbar.title = "I am title "
    
          }
      }
    复制代码
  • 作用域函数让你爱不释手

  • 强大的表达式语句,使用 when 替代 switchif else

      AppConfig.get().apply {
    
        when(EnvPreferences.getEnv(app)) {
    
              ONLINE -> {
                  ...
              }
              PREPARE -> {
                  ...
              }
              DAILY -> {
                  ...
              }
          }
    
      }
    复制代码

投入成本

整个项目重构大概花了两周左右(包括学习 Kotlin 的时间),过程还是很顺利的,且已成功上线了一个版本。

感想

因为一直都是使用 Java 开发,使用 Kotlin 之后,感觉就像打开了新世界,原来写代码可以这么爽,这么酷!

这里也推荐大家看下这个短视频,3分钟左右,是关于国外开发者如何看待 Kotlin,里面还有 Android 大牛 Jake Wharton 哦

Android Developer Story: Kotlin + Android increasing developer happiness and productivity

不过由于刚接触不久,接下来会去深入了解一下 Kotlin 一些高级特性和扩展库,比如:

  • 更好用的动态代理
  • 真泛性
  • kotlinx.coroutines,一个更好用的可替代线程的库
  • android-ktx,好用的 Android 扩展库
  • ...

最后说下期待,因为得到了 Google 的加持,目测很快 Kotlin 会成为 Android 主流的开发语言,希望在 10 月份的 Kotlin 全球开发者大会,可以有更多的大招可以释放出来。

Kotlin 实在太好用了,最后,还是抽象总结一下,使用 Kotlin 可以为你带来哪些好处:

  1. 代码简洁,
  2. 兼容 Java,双语混写
  3. 函数式编程,各种语法糖
  4. 提升编程效率

最后的最后,请允许我借用一张图来表达

关联阅读

Gradle指南之从Groovy迁移到Kotlin

猜你喜欢

转载自juejin.im/post/5b8a0b2851882543025ae384