"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
}

Property names