Kotlin命名规范

10
我是一个对美学有些追求的程序员,最近开始涉足 Kotlin。我将我的静态变量命名为 val PREF_NAME = "onb",但在 Android Studio 中收到了一个警告。 enter image description here 我查看了官方 Kotlin 文档,但发现这与文档中的规定相矛盾。

常量的名称(标记为 const 的属性或者没有自定义 get 函数并且保存着不可变数据的顶层或对象 val 属性)应使用大写的下划线分隔符:

const val MAX_COUNT = 8

val USER_NAME_FIELD = "UserName"

我是否漏掉了什么?

类中声明的字段不是静态的。因此,它们不遵循静态变量的命名约定。 - Zoe stands with Ukraine
2个回答

11

我认为你正在将val放在一个普通类中,就像这样:

class X {
    val PREF_NAME = "onb"
}
通过这样做,你为该类的每个实例提供了单独的属性——尽管它们都具有相同的值,但这与在Java术语中拥有单个静态常量并不完全相同。
文档中指出,常量应放置在以下地方,以便它们只有一个实例,特别是这部分:
 

使用const标记的属性,或者没有自定义get函数的顶级或对象val属性

因此,这些属性可以位于顶层(未嵌套在文件中的任何其他内容中):
val PREF_NAME = "onb"

或者在一个对象内部:

object X {
    val PREF_NAME = "onb"
}

或者在伴生对象中:

class X {
    companion object {
        val PREF_NAME = "onb"
    }
}

如果在编译时是常量,您也可以在这些地方使用 const 修饰符来标记属性。


8
我猜你的属性是在一个类中,因此它既不是顶级对象,也不是对象值:
class A {
    val justAProperty = ""
}

val TOP_LEVEL_VAL_PROPERTY = ""

object B {
    val OBJECT_VAL_PROPERTY = ""
}

坦白说,这两者之间的区别很小。我总是使用驼峰式命名法来命名所有属性,但对于“const val”,我会使用大写字母来标记其不同的性质。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接