Kotlin 命名约定

Kotlin Naming Conventions

我是一个有点审美的程序员,最近我冒险进入了 Kotlin。我将我的静态变量命名为 val PREF_NAME = "onb" 并在 android studio 中收到警报

我对此进行了调查,但它与官方 Kotlin 文档相矛盾

Names of constants (properties marked with const, or top-level or object val properties with no custom get function that hold deeply immutable data) should use uppercase underscore-separated names:

const val MAX_COUNT = 8

val USER_NAME_FIELD = "UserName"

有什么我遗漏的吗?

我猜你的 属性 在 class 中,在这种情况下它既不是顶级也不是对象值:

class A {
    val justAProperty = ""
}

val TOP_LEVEL_VAL_PROPERTY = ""

object B {
    val OBJECT_VAL_PROPERTY = ""
}

坦率地说,它们之间的区别很小。我总是对所有属性使用驼峰式大小写,但 const val 除外,我使用大写来标记它们的不同性质。

我认为您正在做的是将 val 放在常规 class 中,如下所示:

class X {
    val PREF_NAME = "onb"
}

通过这样做,您为 class 的每个实例提供了一个单独的 属性 - 尽管它们都具有相同的值,但这与在 Java 项中有一个静态常量。


在您引用的文档中列出了常量的放置位置,以便它们只有一个实例,特别是这一部分:

properties marked with const, or top-level or object val properties with no custom get function

所以这些属性可以是顶级的(不嵌套在文件中的任何其他内容中):

val PREF_NAME = "onb"

或在 object 内:

object X {
    val PREF_NAME = "onb"
}

或在伴生对象内:

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

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