【问题标题】:Kotlin Naming ConventionsKotlin 命名约定
【发布时间】:2018-08-11 05:25:58
【问题描述】:

我是一位美学程序员,最近我尝试使用 Kotlin。我将我的静态变量命名为 val PREF_NAME = "onb" 并在 android studio 中收到警报

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

常量的名称(用 const 标记的属性,或者没有自定义 get 函数的顶级或对象 val 属性)应该使用大写的下划线分隔的名称:

const val MAX_COUNT = 8

val USER_NAME_FIELD = "UserName"

我有什么遗漏吗?

【问题讨论】:

  • 类中声明的字段不是静态的。因此,它们不遵循静态变量的命名约定

标签: kotlin naming-conventions


【解决方案1】:

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

class X {
    val PREF_NAME = "onb"
}

通过这样做,您为类的每个实例提供了一个单独的属性——即使它们都具有相同的值,这与 Java 术语中的单个静态常量并不完全相同。


您引用的文档中列出了预期放置常量以使其只有一个实例的位置,特别是这部分:

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

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

val PREF_NAME = "onb"

或在object 内:

object X {
    val PREF_NAME = "onb"
}

或者在伴生对象内:

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

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

【讨论】:

    【解决方案2】:

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

    class A {
        val justAProperty = ""
    }
    
    val TOP_LEVEL_VAL_PROPERTY = ""
    
    object B {
        val OBJECT_VAL_PROPERTY = ""
    }
    

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

    【讨论】:

      猜你喜欢
      • 2019-10-27
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2011-02-22
      • 2011-02-07
      • 2012-02-08
      • 2011-09-01
      • 2011-02-04
      相关资源
      最近更新 更多