首页 > 解决方案 > “重复”属性名称的kotlin命名约定?

问题描述

当然,它们并不是真正的重复,我只是不知道如何简短地描述这个概念。这是关于属性获取器,它们仅用于公开另一个隐藏其访问权限的属性的转换。在这里,让我用一段代码解释一下:

class MyClass {
    internal val _children = mutableListOf<MyClass>()
    val children: List<MyClass> get() { return _children.toList() }
}

孩子在内部是可修改的,也应该暴露给外部世界,但他们不应该能够修改列表。我认为这是一个可以理解的情况。

我直观地选择了在 Angular (typescript) 和 c# 中遇到的 _name 约定,这在类似情况下似乎很常用。但是 intellij 抱怨说,按照惯例,所有属性名称都应该以小写字母开头。

在 Kotlin 中这种事情是否还有另一种命名约定,或者 IDE 根本看不到我正在尝试做的事情(这不足为奇),我应该忽略它?

标签: kotlincoding-style

解决方案


是的,编码约定建议在私有支持属性名称前加上下划线,就像您对_children:

支持属性的名称

如果一个类有两个概念上相同的属性,但一个是公共 API 的一部分,另一个是实现细节,请使用下划线作为私有属性名称的前缀:

class C {
    private val _elementList = mutableListOf<Element>()

    val elementList: List<Element>
         get() = _elementList
}

请参阅属性名称


推荐阅读