Luc*_*cem 6 naming-conventions kotlin
我有点审美程序员,最近我冒险使用 Kotlin。我将我的静态变量命名为 asval PREF_NAME = "onb"
并在 android studio 中收到警报
我研究了这个,但它与 Kotlin 官方文档相矛盾
常量的名称(用 const 标记的属性,或者没有自定义 get 函数的顶级或对象 val 属性,这些属性保存深度不可变的数据)应该使用大写下划线分隔的名称:
const val MAX_COUNT = 8
val USER_NAME_FIELD = "UserName"
有什么我想念的吗?
我猜你的属性在一个类中,在这种情况下它既不是顶级也不是对象值:
class A {
val justAProperty = ""
}
val TOP_LEVEL_VAL_PROPERTY = ""
object B {
val OBJECT_VAL_PROPERTY = ""
}
Run Code Online (Sandbox Code Playgroud)
坦率地说,它们之间的差异很小。对于所有属性,我总是使用驼峰式大小写,但对于const val
,我使用大写字母来标记它们的不同性质。
我认为您正在做的是将您val
的课程放在常规课程中,如下所示:
class X {
val PREF_NAME = "onb"
}
Run Code Online (Sandbox Code Playgroud)
通过这样做,您为类的每个实例提供了一个单独的属性——即使它们都具有相同的值,这与 Java 术语中的单个静态常量并不完全相同。
您引用的文档中列出了期望放置常量以使它们只有一个实例的位置,特别是这部分:
用 const 标记的属性,或者没有自定义 get 函数的顶级或对象 val 属性
所以这些属性可以是顶级的(不嵌套在文件中的其他任何东西中):
val PREF_NAME = "onb"
Run Code Online (Sandbox Code Playgroud)
或者在一个object
:
object X {
val PREF_NAME = "onb"
}
Run Code Online (Sandbox Code Playgroud)
或在伴随对象内:
class X {
companion object {
val PREF_NAME = "onb"
}
}
Run Code Online (Sandbox Code Playgroud)
这些也是您可以使用const
修饰符标记属性的地方,如果它在编译时保持不变。
归档时间: |
|
查看次数: |
3895 次 |
最近记录: |