java - Android View 字段名称约定

标签 java android android-layout android-view

例如我有一个 View ,它有 id :

<ImageButton
        android:id="@+id/imageButtonStart"
        android:layout_width="100dp"
        android:layout_height="100dp" />

我是否需要创建具有相同名称的私有(private)字段,如下所示:

private ImageButton imageButtonStart;

最佳答案

Do I need a private field with the same name?

不,布局 xml 文件中的 android:id 不要求您在代码中具有同名变量。

但是如果搜索id需要使用准确的名字

View randomName = findViewById(R.id.imageButtonStart);

命名有很多个人喜好。您应该选择能够清楚地定义命名事物代表什么的名称。并且您应该与您的命名方案保持一致。

该名称应该有多长是值得商榷的,有些人会选择 startBtn 而不是 imageButtonStart,因为它在您的代码中更短且不那么烦人。如果按钮是 ImageButton 这一事实与您的代码无关,则无需将其命名为 imageButton,只需将 button 命名为足以使它的意思清楚。

有些人喜欢使用具有层次结构的名称,其中最重要的区分符排在最前面。就像 Java 和 Android 包名称 com.google.market 而不是 market.google.com

他们选择了 buttonStartbuttonEnd,而不是 startButtonendButton。这背后的原因是您可以更有效地使用自动完成。如果您不记得您将结束按钮命名为 endButton 还是 stopButton,则需要查看整个提案列表。使用 buttonXYZ 方案,您可以开始输入 button,因为您知道它是一个按钮并且只会得到一些建议。

以上也是为什么您应该保持一致的一个很好的例子。如果您将一个按钮命名为 buttonStart,将另一个命名为 clickablethingStop,则整个方案将毫无用处。不一致的命名需要更多时间才能找到正确的东西,如果您选择了错误的东西,可能会导致错误。

另一件事是您用于命名的语言。如果您只是为自己或说该语言的人编写代码,那么使用您自己的语言是完全可以的。但是一旦你想与他人分享它,请使用英语。即使是不正确的英文命名也比用您根本不懂的语言命名更容易阅读和理解。

还有很多其他命名约定:WP:Naming conventions

例如安卓coding syle guide状态:

  • 非公开的、非静态的字段名称以 m 开头。
  • 静态字段名称以 s 开头。
  • 其他字段以小写字母开头。
  • 公共(public)静态最终字段(常量)是 ALL_CAPS_WITH_UNDERSCORES。

这将是 private ImageButton mButtonStart;private static sSingletonThing;

顺便说一句,只有当您想为 Android 源代码做出贡献时才需要使用该约定,您可以以任何风格编写自己的应用。

您真正应该遵循的唯一命名约定是通用的 Java 类/方法/变量模式:(来自上面的维基百科链接)

  • 类名:UpperCamelCase
  • 方法名称:lowerCamelCase
  • 变量名:小驼峰式
  • 常量:ALL_CAPS

如果其他人阅读您的代码并且您使用小写的类名等,他们就会开始变得非常感到困惑。

关于java - Android View 字段名称约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13516591/

相关文章:

java - 在字符串中查找正则表达式模式

Java 初学者需要建议吗?如果(金额==字符串)?

java - Velocity 可以处理对象还是只能处理变量?

android - 从 CursorAdapter.get() 返回对象

android - 在 Android 中创建滑入/滑出部分隐藏的工具栏

android - 如何在 Jetpack Compose 中按基线对齐行元素

android - 在文本输入布局android之外单击时如何将 float 标签文本重置为其原始位置

java - 查找并计算大写字母

android - 使用带有 Ant 的 AndroidProguardScala 构建 Android 项目

android - android中自定义ArrayAdapter中的自定义getFilter