Kotlin 初尝之项目实践总结

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

内容简介:记不清什么时候翻 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 初尝之项目实践总结

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

查看所有标签

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

计算机系统基础

计算机系统基础

袁春风 / 机械工业出版社 / 2014-7-1 / CNY 49.00

《计算机类专业系统能力培养系列教材:计算机系统基础》主要介绍与计算机系统相关的核心概念,解释这些概念如何相互关联并最终影响程序执行的结果和性能。共分8章,主要内容包括数据的表示和运算、程序的转换及机器级表示、程序的链接、程序的执行、存储器层次结构、虚拟存储器、异常控制流和I/O操作的实现等。内容详尽,反映现实,概念清楚,通俗易懂,实例丰富,并提供大量典型习题供读者练习。本书可以作为计算机专业本科或......一起来看看 《计算机系统基础》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具