Kotlin 初尝之项目实践总结

Posted Android机动车

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

点击阅读原文即可获取

以上是关于Kotlin 初尝之项目实践总结的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin flow实践总结

Kotlin 中使用 Hilt 的开发实践

Kotlin 中使用 Hilt 的开发实践

Kotlin 中使用 Hilt 的开发实践

Kotlin:获取点击项目列表视图的值(片段+适配器)

片段内 Spinner 的 Kotlin 问题