0
点赞
收藏
分享

微信扫一扫

Kotlin最佳实践



  1. 字符串连接
    推荐方式:
    ​val fullName = "${user.firstName} ${user.lastName}"​​ 不推荐方式:
    ​val fullName = user.firstName + " " + user.lastName​
  2. list获取元素方式
    推荐方式:

val array = ArrayList<Int>()
array[0]

不推荐方式:

val array = ArrayList<Int>()
array.get(0)
  1. 循环方式,推荐forEach
    推荐方式:
(0..9).forEach {
// todo somethings
}

不推荐方式:

for (i in 0..9) {
// todo somethings
}

  1. 变量可视性修饰符
    默认修饰符是public,如果没有其他需要可以省略。
    推荐方式:
    ​val wideOpenProperty = 1​​ 不推荐方式:
    ​public val wideOpenProperty = 1​
  2. 对于简单的数据结构,推荐使用data类
    推荐方式:
    ​data class Person(val name: String)​​ 不推荐方式:

class Person(val name: String) {
override fun toString() : String {
return "Person(name=$name)"
}
}
  1. 使用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
}
  1. 扩展函数
    推荐方式:
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()可以对对象的初始化代码进行分组和集中。这样,我们就不必一遍一遍的重复变量名称了。

9. 优先使用默认参数

推荐方式:

fun user(name:String,isDream:Boolean=true){
}

不推荐方式:

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

附录:

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


举报

相关推荐

0 条评论