"duplicate" 属性 名称的 kotlin 命名约定?
kotlin naming conventions for "duplicate" property names?
它们并不是真的重复,当然,我只是不知道如何用简短的方式描述这个概念。它是关于 属性 getter 的,它们只是在那里公开另一个 属性 的转换,其访问被隐藏。这里,我用一段代码来说明一下:
class MyClass {
internal val _children = mutableListOf<MyClass>()
val children: List<MyClass> get() { return _children.toList() }
}
children在内部是可以修改的,对外应该也是可以修改的,但是应该不能修改list。我认为这是一个相当可以理解的情况。
我凭直觉选择了我在 Angular (typescript) 和 c# 中遇到的 _name 约定,这在类似情况下似乎很常用。
但是 intellij 抱怨说按照惯例,all 属性 名称应该以小写字母开头。
在 Kotlin 中是否有针对此类事物的另一种命名约定,或者 IDE 只是没有看到我正在尝试做的事情(这不足为奇)而我应该忽略它?
是的,编码约定表明
在私人支持 属性 名称前加上下划线,就像您对 _children
:
所做的一样
Names for backing properties
If a class has two properties which are conceptually the same but one is part of a public API and another is an implementation detail, use an underscore as the prefix for the name of the private property:
class C {
private val _elementList = mutableListOf<Element>()
val elementList: List<Element>
get() = _elementList
}
它们并不是真的重复,当然,我只是不知道如何用简短的方式描述这个概念。它是关于 属性 getter 的,它们只是在那里公开另一个 属性 的转换,其访问被隐藏。这里,我用一段代码来说明一下:
class MyClass {
internal val _children = mutableListOf<MyClass>()
val children: List<MyClass> get() { return _children.toList() }
}
children在内部是可以修改的,对外应该也是可以修改的,但是应该不能修改list。我认为这是一个相当可以理解的情况。
我凭直觉选择了我在 Angular (typescript) 和 c# 中遇到的 _name 约定,这在类似情况下似乎很常用。 但是 intellij 抱怨说按照惯例,all 属性 名称应该以小写字母开头。
在 Kotlin 中是否有针对此类事物的另一种命名约定,或者 IDE 只是没有看到我正在尝试做的事情(这不足为奇)而我应该忽略它?
是的,编码约定表明
在私人支持 属性 名称前加上下划线,就像您对 _children
:
Names for backing properties
If a class has two properties which are conceptually the same but one is part of a public API and another is an implementation detail, use an underscore as the prefix for the name of the private property:
class C { private val _elementList = mutableListOf<Element>() val elementList: List<Element> get() = _elementList }