Android视图字段名称约定

时间:2012-11-22 16:15:40

标签: java android android-layout android-view

例如我的视图有id:

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

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

private ImageButton imageButtonStart;

2 个答案:

答案 0 :(得分:5)

  

我是否需要具有相同名称的私人字段?

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

但是如果搜索id

,则需要使用确切的名称
View randomName = findViewById(R.id.imageButtonStart);

命名是很多个人偏好。您应该选择明确定义命名事物代表内容的名称。而且你应该与你的命名方案保持一致。

这个名称应该有多久是值得商榷的,有些人会选择startBtn而不是imageButtonStart,因为它在您的代码中更短,更不烦人​​。如果按钮为ImageButton这一事实与您的代码无关,则无需将其命名为imageButton,只需button即可使其明确含义。

有些人喜欢使用具有分层方案的名称,其中最重要的区分符号首先出现。像Java&amp; Android软件包名称com.google.market而不是market.google.com

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

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

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

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

例如Android coding syle guide声明:

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

这将是private ImageButton mButtonStart;private static sSingletonThing;

如果您希望为Android源代码做出贡献,那么只需要使用该约定,您就可以用任何风格编写自己的应用程序。

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

  • 班级名称:UpperCamelCase
  • 方法名称:lowerCamelCase
  • 变量名称:lowerCamelCase
  • 常数:ALL_CAPS

如果他们读了你的代码并且你有小写的类名等,那么它开始让非常让其他人感到困惑。

答案 1 :(得分: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);