为什么官方文档中val变量使用大写字母?

Hel*_*oCW 3 android kotlin android-jetpack-compose

代码A来自官方文档val Yellow200使用大写字母,但在许多示例项目中我可以找到小写字母的代码B。

我认为代码 B 是个好方法,yellow200不是经常使用大写字母的 const。

为什么官方文档中val变量使用大写字母?

代码A

val Yellow200 = Color(0xffffeb46)
Run Code Online (Sandbox Code Playgroud)

代码B

val yellow200 = Color(0xffffeb46)
Run Code Online (Sandbox Code Playgroud)

Sam*_*Sam 10

这是 Jetpack Compose 中的标准命名约定,并在API 指南中进行了描述。它在整个框架和库中使用,并且应用程序开发人员也可以选择遵循它。

Jetpack Compose 框架开发必须遵循此处PascalCase记录的允许的对象声明约定来命名深度不可变常量,作为. 枚举类值也必须使用同一部分中记录的方式命名。CAPITALS_AND_UNDERSCORESPascalCase

在针对或扩展 Jetpack Compose 时,库开发应该遵循相同的约定。

应用程序开发可以遵循此约定。

https://android.googlesource.com/platform/frameworks/support/+/androidx-main/compose/docs/compose-api-guidelines.md#singletons_constants_sealed-class-and-enum-class-values

如果您有兴趣阅读更多内容,他们在同一份文件中提供了该决定的一些理由。他们引用的来源是Kotlin 编码约定,它实际上为属性名称是否应以大写字母开头提供了一些余地。它并不像“所有变量都是小驼峰命名”那么简单。

Kotlin 风格指南的内容是:

保存具有行为或可变数据的对象的顶级或对象属性的名称应使用驼峰命名法:

val mutableCollection: MutableSet<String> = HashSet()

保存对单例对象的引用的属性名称可以使用与对象声明相同的命名样式:

val PersonComparator: Comparator<Person> = /*...*/

https://kotlinlang.org/docs/coding-conventions.html#property-names

因此,在一般 Kotlin 代码中,是否使用小写或大写首字母的选择在某种程度上取决于您,具体取决于变量的使用方式。

通过“单例对象”,它们可能只是指使用对象表达式声明的对象,但将相同的命名约定扩展到类的单个不可变实例之类的东西并不是太大的飞跃Color

相同的大驼峰命名约定也可用于枚举条目。您的示例中的实例Color在用途和目的方面与枚举条目非常相似,我认为这是支持或更喜欢使用大写首字母的另一个论点。

当前版本的Android Kotlin 风格指南在这里不太宽松。它建议所有变量名称都应采用小驼峰命名法,但常量除外,应采用 UPPER_SNAKE_CASE。在此基础上,变量的名称Color应以小写字母开头。

我认为你的“Code A”和“Code B”在风格上都不错,而且双方都有很好的论据。这取决于您阅读的风格指南以及您如何解释它。当然,这还取决于您自己的个人偏好以及您可能与代码库上的合作者达成的共享约定。