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
修饰符标记 属性 的地方,如果它在编译时是常量的话。
我是一个有点审美的程序员,最近我冒险进入了 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
修饰符标记 属性 的地方,如果它在编译时是常量的话。