代码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相关问答推荐

为什么Ionic-checkbox不总是刷新Android上的视图?

保护所有程序包文件和类

从未设置实时数据值

Jetpack Compose:带芯片的Textfield

我怎样才能画一条线在喷气背包组成和有一个自定义的角落?

是否可以附加事件处理程序,如onClick,拖动到Canvas Composable中绘制的内容,或使用drawBehind修饰符?

Android 中 recyclerview 的自定义分隔线 colored颜色 不起作用

在 kotlin 上向适配器添加绑定视图功能

在 react native 中设置 react-native-paper 组件的样式

Android CompanionDeviceManager 永远找不到任何附近的蓝牙设备

在 Jetpack Compose 中使用 ViewModel 实现 startActivity 的最佳实践

在 Jetpack Compose 中更改列中子项的对齐方式

Android Studio xml 预览问题无法初始化编辑器

删除一对多关系室 Kotlin 中的所有值

如何使用文件提供程序将视频从一个应用程序共享到另一个应用程序?

单击登录按钮后从应用程序中退出

在 Room 中创建一对多关系时,@Relation 类是什么意思?

compose FontFamily 错误:必须初始化变量

Android Studio,Db 连接错误:发生异常情况导致驱动程序失败.请报告此异常

当我点击这个按钮时,我想使布尔值(boolean)为真.并将其传递给函数,以便在屏幕上显示内容