Kotlin 初尝之项目实践总结

栏目: IOS · Android · 发布时间: 6年前

内容简介:记不清什么时候翻 Android 官方文档的时候,发现提供的示例代码已经变成了 Kotlin...逛全球最大同性交友网站( GitHub )也发现越来越多的开源库都是基于 Kotlin 语言...关于 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. 提升编程效率

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

Kotlin 初尝之项目实践总结

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序正义论

程序正义论

徐亚文 / 山东人民出版社 / 2004-3-1 / 22.00元

程序正义论,ISBN:9787209033916,作者:徐亚文著一起来看看 《程序正义论》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

MD5 加密
MD5 加密

MD5 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试