代码A来自official document,val Yellow200使用的大写字母,但在许多示例项目中,我可以发现代码B是小写的.

我认为B代码是很好的方法,yellow200不是常量,因为它经常使用大写字母.

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

Code A

val Yellow200 = Color(0xffffeb46)

Code B

val yellow200 = Color(0xffffeb46)

推荐答案

这是Jetpack Compose中的标准命名约定,并在API Guidelines中进行了描述.它在整个框架和库中使用,应用程序开发人员也可以 Select 性地遵循它.

Jetpack Compose framework development必须按照允许的对象声明约定PascalCase命名深度不可变的常量,作为对CAPITALS_AND_UNDERSCORES的任何用法的替代.枚举类值还必须使用PascalCase命名,如同一节中所述.

当瞄准或扩展Jetpack Compose时,Library development应该遵循相同的约定.

App Development人可以遵循这一惯例.

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

如果您对阅读更多内容感兴趣,在同一文档中,他们为这一决定提供了一些理由.他们在那里引用的来源是Kotlin coding conventions,这实际上给了房产名称是否应该以大写字母开头的一些回旋余地.这并不像"所有变量都比卡梅尔凯斯低"那么简单.

Kotlin 风格指南说的是:

包含具有行为或可变数据的对象的顶级或对象属性的名称应使用驼峰大小写名称:

val mutableCollection: MutableSet<String> = HashSet()

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

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

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

因此,在一般的Kotlin代码中,根据变量的使用方式, Select 使用小写还是大写首字母在某种程度上取决于您.

所谓的"单例对象"可能只是指使用对象表达式声明的对象,但将相同的命名约定扩展到像Color类的单个不可变实例这样的东西并不是太大的飞跃.

同样的UpperCamelCase命名约定也可以用于枚举条目.您的示例中的Color个实例在用法和用途上与枚举条目非常相似,我认为这是支持或更喜欢这里的大写首字母的另一个论点.

当前版本的Android Kotlin style guide在这里有点不那么宽松.它建议所有变量名都应该是LowerCamelCase,除了常量应该是UPERVOKE_CASE.在此基础上,Color个变量的名称应以小写字母开头.

我认为你的‘A代码’和‘B代码’在风格上都是不错的,双方都有很好的论点.这取决于你读的是哪种风格指南,以及你是如何解读它的.当然,这还取决于您自己的个人偏好,以及您可能已经与合作者就您的代码库达成一致的共同约定.

Android相关问答推荐

如何使用单个代码库使用不同的firebase项目创建多个应用程序ID apk

以编程方式更改Android应用程序上的文件许可

在Android应用程序上使用Room数据库时,是否可以预先填充数据

Android配置设置. gradle不同应用风格

strings.xml中字符串数组中的占位符

Jetpack Compose:如何将文本放置在行的右侧?

FFmpeg Android 错误

减少Compose中可滚动选项卡之间的间距

SQLite Kotlin 问题 - 没有数据库

Jetpack Compose 中的滑动按钮菜单

为片段设置主题

无法通过 retrofit 解析对 kotlin 数据类的 xml 响应

Material Design 网站的新设计已启动,但我找不到实现选项卡,该选项卡在哪里?

Hilt 依赖注入重复绑定错误

GridLayout 和 GridView 有什么好用和区别

Android Jetpack Compose - 每次文本字段值更改时,可组合函数都会重新组合

Android Studio:如何添加应用程序质量洞察窗口以查看 Android Studio 中的 Crashlytics 数据?

任何 IRCTC 的公共 API 来判断 PNR 状态和座位可用性?

如何将私有 mutableStateOf 分配给 Android Jetpack 中的 State 变量?

dagger2 抛出错误:如果没有 @Provides-annotated 方法就无法提供.在我的 android 项目的构建中