加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

行使Kotlin做开拓一个月后的感触

发布时间:2019-04-01 22:59:24 所属栏目:建站 来源:业松
导读:谈 kotlin之前 有一类措施员,本身基础没体验过的对象,看了几篇哗众取宠的博文本身也来冷笑,我称之为云措施员。 就好比 Kotlin,有人蹭热度写几篇相同我为什么从 kotlin 又回到java的博文,就把 kotlin 一通批驳。有空看看这些蹭热度博文为啥不看看Andro
副问题[/!--empirenews.page--]

谈 kotlin之前

有一类措施员,本身基础没体验过的对象,看了几篇哗众取宠的博文本身也来冷笑,我称之为云措施员。

就好比 Kotlin,有人蹭热度写几篇相同“我为什么从 kotlin 又回到java”的博文,就把 kotlin 一通批驳。有空看看这些蹭热度博文为啥不看看Android Developer 官网全部示例代码都是 kotlin 版本在前,java 版本在后呢?

行使Kotlin做开拓一个月后的感触

争论说话、框架的是非是没故意义的。许多措施员老是对本身一向行使的说话、框架大举吹嘘而对其他说话、框架各类贬低,很明明这样的措施员太狭窄了。

Java确实常年排名第一,其他说话就没故意义了吗?虽然不是,纵然是批驳,你也得本身真的体验过了才有资格。这可不是你行你上的翻版,事实相识一门新说话对一个真正措施员老说是很轻松的事。

简捷的语法

Kotlin给我的感受就是它就是针对Java里全部的痛点来做改变的,好比语法繁琐,烦人的空指针,,穷乏函数式编程支持(Java8固然支持Lambda表达式但还远远不足)等等。

不像它的孪生兄弟Scala那样旷达,Kotlin给我的感觉是智慧又禁止,对Java措施员来说半天就足够上手开干了,不像Scala门槛那么高。

Java说话是我所打仗过说话中语法最繁琐的(有更繁琐的请奉告),这种繁琐在main函数就可以浮现,并且Java也许也是独逐一个险些没法不消IDE的说话。其他说话离开了IDE的语法告诫和代码天生模版也始末能写一写,Java代码你没有试试看?

可是Java的语法之严谨和繁琐恰好是Java云云风行的缘故起因。没写过Java的人也许没法领略这句话。人们对付Java严苛的语法还不足满足,还要再加上 check-style,findbugs以及各类XXX公司Java代码类型等各类条条框框,最终获得的功效是全部Java措施员写出来的代码都能相互看懂。

纵然是刚结业不久的Java措施员,只要认识Java面向工具语法,险些不存在看不懂其他Java代码的环境(营业看不懂除外)。这样担保了Java措施员的代码下限很是之高,可以或许担保大型项目标乐成。

仿佛扯 Java 扯的有点多了。打仗 Kotlin 之后会发明,kotlin 在尽也许保持和 Java一样的语法严苛性的环境下,大幅度地精简了 Java 代码,写起来很是之爽。

  1. //快速建设一个Bean类 
  2. data class Person(val id: Long, var name: String, var age: Int) 
  3.  
  4. fun main() { 
  5.     // 建设实例 
  6.     val zhangsan = Person(0L, "zhangsan", 23) 
  7.     // set/get要领 
  8.     zhangsan.age = 24 
  9.     val name = zhangsan.name 
  10.  
  11.     //copy要领 
  12.     val lisi = zhangsan.copy(id = 1, name = "lisi") 
  13.     //默认天生的tostring和equals/hashcode要领,可重写 
  14.     zhangsan.toString() 
  15.     zhangsan.hashCode() 
  16.     var isEqual = zhangsan.equals(lisi) 

简捷的语法无处不在,好比上面的Bean类假如用java来写至少要多好几倍的代码。单例模式只必要把class换成object即可。这些固然用Java的IDE的各类模版天生器材一样可以秒天生,可是照旧kotlin写起来更惬意一些。

我想夸大的是,Kotlin并不是无脑地操作语法糖和新要害字来精简语法,我们可以很清楚地感觉到Kotlin在计划进程中尽也许地担保它尽也许的语法严苛性。

空指针

Java 的空指针非常被称之为 “Billion Dollar Mistake”。在上家公司的时辰为了停止空指针非常,代码类型要求险些全部的工具都要举办判空操纵,那种嵌套很深的json工具,判空起来真的是又臭又长。

  1. val name: String? 
  2. //这里要吐槽下为啥kotlin没有三目运算符? 
  3. name = if(Random.nextBoolean()) "Ann" else null 
  4. //加上?则只在name不为null的时辰会挪用,获得的len1范例也是有问号的,即Int? 
  5. val len1 = name?.length 
  6. //这种写法是假如为空给一个默认值,获得的len2范例为Int,不带问号 
  7. val len2 = name?.length?:0 
  8. //加上双叹息号着实就是java什么都不加的写法了,假如为null会报空指针非常 
  9. val len3 = name!!.length 

上面的代码表明白三种对也许为空的工具的处理赏罚。着实我把 Kotlin 对空指针的处理赏罚归类为给全部工具加了个范型——标记?,对付带?的工具则表白它也许为空,你不处理赏罚直接行使的话不让编译,也就是把空指针只管抹杀在编译时代。这个设法真的是简朴又奇妙。许多人一听 Kotlin 就说没有空指针了,可是没用过的话并不知道怎么实现的。此刻再有口试官问你,知道怎么答复了吧?

函数式编程

  1. fun AppCompatActivity.setupActionBar(@IdRes toolbarId: Int, action: ActionBar.() -> Unit) { 
  2.     val toolbar = findViewById<Toolbar>(toolbarId) 
  3.     setSupportActionBar(toolbar) 
  4.     supportActionBar?.run { 
  5.         //执行参数中的函数,这样用户在挪用该要领的时辰越发机动 
  6.         action() 
  7.     } 
  8.     toolbar.setNavigationOnClickListener { 
  9.         Log.d("AppCompatActivity", "finish") 
  10.         finish() 
  11.     } 
  12.  
  13. //------------------------支解线----------------------------- 
  14. //相同的单要领接口此刻只必要写一个闭包就行了 
  15. binding.aliPayIcon.setOnClickListener { 
  16.     Log.d("example", it.contentDescription.toString()) 
  17.  
  18. //扩展函数let,只有在工具不为空的时辰会挪用,相等于做了判空 
  19. binding.let { 
  20.     it.setLifecycleOwner(this@WithdrawActivity) 
  21.     it.viewModel = vm 
  22.  
  23. //扩展函数apply, 在闭包内可直接挪用工具的要领属性,有个甜头就是可以直接操纵工具不必要天赋生变量 
  24. vm.accountName.apply { 
  25.     this.value = "aaaa" 
  26.     Log.d("example", this.value?.toString() + ":" + this.hashCode()) 
  27.  
  28. //尚有其他基本扩展函数run, with, also等等,可以看看这篇博客的先容:https://www. 

函数式编程对许多Java措施员来说是很生疏的。

尽量我不想黑,可是Java真的强到让许多Java措施员只会Java一门说话,而且根基上Java8以上的版本也没打仗过。而除了Java(Java8以下)我还真不知道哪门说话不支持函数式编程。

险些全部说话都支持函数式编程,因此会机动行使函数式编程真的挺重要。Java不支持是由于函数式编程相对要难一点,不支持函数式编程反而让Java代码的下限更高。

除了难度大一点,函数式编程最令人不爽的就是阅读性差(也许较量依靠写代码的人的程度),我看Java框架源码根基都很顺畅,可是看JavaScript框架的确懵逼。

我此刻的程度看Kotlin函数式代码也费劲,可是kotlin事实是强范例说话,函数的参数和返回值范例牢靠的话,当真读照旧不难读懂的。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读