美文网首页安卓开发
Kotlin最佳实践

Kotlin最佳实践

作者: 蓝不蓝编程 | 来源:发表于2019-02-18 16:28 被阅读4次
  1. 字符串连接
    推荐方式:
    val fullName = "{user.firstName}{user.lastName}"
    image.png
    不推荐方式:
    val fullName = user.firstName + " " + user.lastName
    image.png
  2. list获取元素方式
    推荐方式:
    val array = ArrayList<Int>()
    array[0]
    不推荐方式:
    val array = ArrayList<Int>()
    array.get(0)
  3. 循环方式,推荐forEach
    推荐方式:
    (0..9).forEach {
    // todo somethings
    }
    不推荐方式:
    for (i in 0..9) {
    // todo somethings
    }
  4. 变量可视性修饰符
    默认修饰符是public,如果没有其他需要可以省略。
    推荐方式:
    val wideOpenProperty = 1
    不推荐方式:
    public val wideOpenProperty = 1
  5. 对于简单的数据结构,推荐使用data类
    推荐方式:
    data class Person(val name: String)
    不推荐方式:
    class Person(val name: String) {
    override fun toString() : String {
    return "Person(name=$name)"
    }
    }
  6. 使用when表达式
    推荐方式:
    fun getDefaultSex(name:String):User{
    if(name=="mike"||name=="jack"){
    return male;
    }
    if(name="marry"||name="jane"){
    return female
    }
    return male
    }
    不推荐方式:
    fun getDefaultSex(name:String)=when(name){
    "mike","jack"->male
    "marry","jane"->female
    else->male
    }
  7. 扩展函数
    推荐方式:
    fun Int.countNum():Int{
    return plus(2)
    }
    调用样例:3.countNum()
    不推荐方式:使用专门的工具类
  8. 使用apply简化对象调用
    推荐方式:
    val user=User().apply{
    name="android coder"
    age=25
    sex="male"
    isDream=true
    }
    不推荐方式:
    val user=User()
    user.Name="android code"
    user.age=25
    user.sex=male
    user.isDream=true

扩展函数apply()可以对对象的初始化代码进行分组和集中。这样,我们就不必一遍一遍的重复变量名称了。

  1. 优先使用默认参数
    推荐方式:
    fun user(name:String,isDream:Boolean=true){
    }
    不推荐方式:
    fun user(name:String){
    user(name,true)
    }
    fun user(name:String,isDream:Boolean){
    }
  2. 关注函数定义及调用时入参是否允许为空
    kotlin函数参数默认不允许为空
    推荐方式:
    如果函数允许为空,声明时类型后面要增加问号。
    对于参数不能为空的函数,在调用前,需要确保参数不为空,否则会导致空指针异常。(点击查看详情

附录:

使用Kotlin反而导致空指针异常的坑

安卓开发技术分享: https://www.jianshu.com/p/442339952f26

相关文章

网友评论

    本文标题:Kotlin最佳实践

    本文链接:https://www.haomeiwen.com/subject/lxzaeqtx.html