Kotlin命名约定

时间:2018-08-11 05:25:58

标签: kotlin naming-conventions

有点美的程序员,最近我冒险进入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"

我缺少什么吗?

2 个答案:

答案 0 :(得分:4)

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

class A {
    val justAProperty = ""
}

val TOP_LEVEL_VAL_PROPERTY = ""

object B {
    val OBJECT_VAL_PROPERTY = ""
}

坦率地说,两者之间的差异很小。除了const val以外,我始终对所有属性都使用驼峰式大小写,为此我使用大写字母来标记它们的不同性质。

答案 1 :(得分:3)

我认为您正在做的是将val放在常规班级中,就像这样:

class X {
    val PREF_NAME = "onb"
}

通过这样做,您将为类的每个实例赋予一个单独的属性-即使它们都具有相同的值,这与Java术语中的单个静态常量并不完全相同。 / p>


在您引用的文档中,特别是以下部分,列出了将常量放置为仅具有一个实例的位置:

  

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

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

val PREF_NAME = "onb"

或在object内:

object X {
    val PREF_NAME = "onb"
}

或在同伴对象内:

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

如果在编译时该属性不变,那么在这里也可以使用const修饰符标记属性。