最近,我在Kotlin中遇到了一些有关代码样式的问题。我不知道哪种代码风格更好。
假定此处有可为空字段:
var scoreView: TextView? = null
val bgImageView: ImageView? = null
我想这样写:
fun foo() {
scoreView?.apply {
text = getScore()
textColor = getColor()
...
}
bgImageView?.apply {
Glide.with(context)
.load(xxx)
.into(this)
}
}
我的团队负责人想将其更改为:
fun foo() {
scoreView?.text = getScore()
scoreView?.textColor = getColor()
...
Glide.with(context)
.load(xxx)
.into(bgImageView?:return)
}
我觉得两者都可以,但我更喜欢第一个,因为我可以写更少的“ xxView?”。
我想知道是否有一些代码样式或规则。或一些对此的普遍看法。
谢谢。
答案 0 :(得分:2)
根据Kotlin的official coding style,当您调用主要与一个对象进行交互的多个函数时,将代码放在.apply
之类的范围函数中是一种惯用的方法。当然,您的工作场所可能会使用不同的约定,因此一定要向您的团队负责人询问。
在第一个示例中,您正将apply
用于其设计目的:在一个对象上设置多个属性,并在这些情况下增强可读性。
scoreView?.apply {
text = getScore()
textColor = getColor()
...
}
在第二个示例中,apply
函数用于分隔作用于可空对象bgImageView
上的代码。样式指南支持这种用法,尽管在这些可为空的情况下似乎更强烈推荐let
。
bgImageView?.apply {
Glide.with(context)
.load(xxx)
.into(this)
}
bgImageView?.let {
Glide.with(context)
.load(xxx)
.into(it)
}
样式指南还介绍了with
,also
和run
函数中的intended uses。