问题描述
我想知道在Kotlin中声明一个类的值的最佳方法是什么(不一定在性能方面,在标准方面)。 让我用代码解释一下,这是我看到的三种可能性:
private class Player(val editText: EditText,val state: Int,val name: String = editText.text.toString().trim()) {
init{
//we do some code here that read the String 'name'
}
//some other methods
}
private class Player(val editText: EditText,val state: Int) {
val name: String = editText.text.toString().trim()
init{
//we do some code here that read the String 'name'
}
//some other methods
}
private class Player(val editText: EditText,val state: Int) {
init{
val name: String = editText.text.toString().trim()
//we do some code here that read the String 'name'
}
//some other methods
}
我绝对想通过调用他们的getter访问玩家的名字(例如player1.name)。哪一个比另一个更好,为什么? (性能和标准)
解决方法
第一个选项与其他两个选项之间有明显的区别。
选项1-构造函数初始化:
除了自动设置“名称”属性外,此选项还允许对象的创建者通过以下方式设置名称:
val myPlayer = Player(EditText(),"Bob")
其他选项不允许呼叫者设置名称。
选项2 和选项3 在功能上几乎相同。不应有任何明显的性能差异。最大的区别是选项2中的代码将在init块之前运行。
就标准而言:
- 如果您希望呼叫者能够设置姓名,请选择选项1
- 如果要强制使用设置的“ editText”对象,则选择选项2
没有严格的标准,所以如果选项3对您和将要阅读代码的其他人看起来更好,请继续进行选择。就个人而言,仅当初始化所需的代码比基本的单行代码复杂时,我才会初始化init块中的字段。