kotlin - “重复”属性名称的kotlin命名约定?
问题描述
当然,它们并不是真正的重复,我只是不知道如何简短地描述这个概念。这是关于属性获取器,它们仅用于公开另一个隐藏其访问权限的属性的转换。在这里,让我用一段代码解释一下:
class MyClass {
internal val _children = mutableListOf<MyClass>()
val children: List<MyClass> get() { return _children.toList() }
}
孩子在内部是可修改的,也应该暴露给外部世界,但他们不应该能够修改列表。我认为这是一个可以理解的情况。
我直观地选择了在 Angular (typescript) 和 c# 中遇到的 _name 约定,这在类似情况下似乎很常用。但是 intellij 抱怨说,按照惯例,所有属性名称都应该以小写字母开头。
在 Kotlin 中这种事情是否还有另一种命名约定,或者 IDE 根本看不到我正在尝试做的事情(这不足为奇),我应该忽略它?
解决方案
是的,编码约定建议在私有支持属性名称前加上下划线,就像您对_children
:
支持属性的名称
如果一个类有两个概念上相同的属性,但一个是公共 API 的一部分,另一个是实现细节,请使用下划线作为私有属性名称的前缀:
class C { private val _elementList = mutableListOf<Element>() val elementList: List<Element> get() = _elementList }
请参阅属性名称
推荐阅读
- c# - Docker compose 不拾取环境变量
- python - 分段错误:11 - tkinter python
- java - 使用 Scanner 类将字符串值输入字符串数组
- git - 在 /usr/share/perl5/core_perl/Net/SMTP.pm 第 270 行安装版本>=2.007 的 IO::Socket::SSL,
3号线 - java - Android Studio (Java):在 TextView 上设置时间
- android - android butterknife 没有显示 Generate butterknife generate injections in Android Studio4.1.2
- c++ - A-Star 搜索算法找不到有效路径
- laravel - 从 GMT 时间获取当地时间的偏移时间 - Laravel Carbon
- python - AttributeError: 'list' object has no attribute 'text' 在 DOM 中查找元素时出错
- git - 为什么 pgp 签名直接附加到标头而不是将它们存储在 blob 中并引用它们?