- 字符串连接
推荐方式:
val fullName = "{user.lastName}"
image.png
不推荐方式:
val fullName = user.firstName + " " + user.lastName
image.png
- list获取元素方式
推荐方式:
val array = ArrayList<Int>()
array[0]
不推荐方式:
val array = ArrayList<Int>()
array.get(0) - 循环方式,推荐forEach
推荐方式:
(0..9).forEach {
// todo somethings
}
不推荐方式:
for (i in 0..9) {
// todo somethings
} - 变量可视性修饰符
默认修饰符是public,如果没有其他需要可以省略。
推荐方式:
val wideOpenProperty = 1
不推荐方式:
public val wideOpenProperty = 1 - 对于简单的数据结构,推荐使用data类
推荐方式:
data class Person(val name: String)
不推荐方式:
class Person(val name: String) {
override fun toString() : String {
return "Person(name=$name)"
}
} - 使用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
} - 扩展函数
推荐方式:
fun Int.countNum():Int{
return plus(2)
}
调用样例:3.countNum()
不推荐方式:使用专门的工具类 - 使用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()可以对对象的初始化代码进行分组和集中。这样,我们就不必一遍一遍的重复变量名称了。
- 优先使用默认参数
推荐方式:
fun user(name:String,isDream:Boolean=true){
}
不推荐方式:
fun user(name:String){
user(name,true)
}
fun user(name:String,isDream:Boolean){
} - 关注函数定义及调用时入参是否允许为空
kotlin函数参数默认不允许为空
推荐方式:
如果函数允许为空,声明时类型后面要增加问号。
对于参数不能为空的函数,在调用前,需要确保参数不为空,否则会导致空指针异常。(点击查看详情)
附录:
安卓开发技术分享: https://www.jianshu.com/p/442339952f26
![](https://img.haomeiwen.com/i6169789/ff500ff6a4688a7d.png)
网友评论