5

例如,我有 id 的视图:

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

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

private ImageButton imageButtonStart;
4

2 回答 2

5

我需要一个同名的私有字段吗?

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

但是,如果您搜索 id,则需要使用确切的名称

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

命名是很多个人喜好。您应该选择清楚地定义命名事物所代表的名称。你应该与你的命名方案保持一致。

该名称应该多长是有争议的,有些人会选择它startBtnimageButtonStart因为它在您的代码中更短且不那么烦人。如果按钮是 an 的事实ImageButton与您的代码无关,则无需命名它imageButton,只需button使其含义清晰即可。

有些人喜欢使用具有层次结构的名称,其中最重要的区别首先出现。像 Java 和 Android 包名称com.google.market而不是market.google.com.

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

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

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

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

例如 Android编码风格指南指出:

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

这将是private ImageButton mButtonStart;private static sSingletonThing;

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

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

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

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

于 2012-11-22T16:18:33.317 回答
3

尽管保持一致并为变量使用相同的名称是一种很好的做法,但您不需要将类变量与 XML 中的 id 调用相同,因为您将在代码中手动连接它们,例如:

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

我个人偏好使用XMLcomponentTypeDescriptiveName等格式imageButtonStart,但在代码中我更喜欢英语驱动的方法,例如startButton.

通常我最终得到

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

ImageButton startButton = (ImageButton) this.findViewById(R.id.imageButtonStart);
于 2012-11-22T16:17:52.000 回答