安卓视图字段命名规范

5
例如,我有一个视图,它有一个ID:
<ImageButton
        android:id="@+id/imageButtonStart"
        android:layout_width="100dp"
        android:layout_height="100dp" />

我需要创建一个私有字段并使用相同的名称,像这样:

private ImageButton imageButtonStart;

XML ID和Class字段之间的最佳命名约定是什么? - testCoder
2个回答

5

我需要使用与变量同名的私有字段吗?

不需要,在布局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:命名约定

例如,Android 编码样式指南 指出:

  • 非公共、非静态字段名称以 m 开头。
  • 静态字段名称以 s 开头。
  • 其他字段以小写字母开头。
  • 公共静态 final 字段(常量)为 ALL_CAPS_WITH_UNDERSCORES。

它将是 private ImageButton mButtonStart;private static sSingletonThing;

顺便说一下,只有当您想要贡献给 Android 源代码时才需要使用该约定,您可以按任何样式编写自己的应用程序。

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

  • 类名:UpperCamelCase
  • 方法名:lowerCamelCase
  • 变量名:lowerCamelCase
  • 常量:ALL_CAPS

如果其他人阅读您的代码并且您使用小写类名称等,那么情况会变得非常混乱。


在这种情况下,类字段的更好名称是什么? - testCoder
@testCoder 使用相同的名称是一个好方法。您在代码中使用的名称完全取决于您自己。但是,如果您使用不会让自己感到困惑的名称,那么您可以帮助自己。例如,只使用 startButton 应该清楚地表明它是您布局中的启动按钮。 - zapl

3

尽管保持一致并使用相同名称的变量是一个好的实践,但你不需要将类变量与XML中的id命名为相同的名称,因为你可以通过代码手动将它们连接起来,例如:

ImageButton imageButtonNotStart = (ImageButton) this.findViewById(R.id.imageButtonStart);

我个人偏好使用格式为componentTypeDescriptiveName的方式,如在XML中使用imageButtonStart,但在代码中我更喜欢一种更注重英文的方式,比如startButton

通常情况下,我会以这种方式结束。

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

ImageButton startButton = (ImageButton) this.findViewById(R.id.imageButtonStart);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接