Android ID命名约定:小写与下划线与驼峰大小写

我目前正在为Android编程一个应用程序。 现在我发现,你不能把资源对象放在可绘制的文件夹中,并将其命名为“myTestImage.jpg”。 这会给你一个编译器错误,因为不允许骆驼大小写的语法,所以你必须把它重命名为“my_test_image.jpg”。

但是,你在XML文件中定义了什么呢? 假设你有以下定义

<TextView android:id="@+id/myTextViewFirstname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Firstname" /> 

这是一个有效的定义,在我的Android模拟器上编译和工作得很好,但是 – 正如你所看到的 – 我在camel case语法中指定了id。

现在,Android示例总是使用小写和下划线。 这只是一个命名约定,使用小写字母和下划线的ID或可能会导致真正的设备上的问题?

谢谢

如果您使用骆驼案件id名称,设备不会抱怨。 对于我的第一个应用程序,我用骆驼的方式编写了所有的id,因为我觉得在Java代码中这样看起来更好,而且工作得很好。

但是,我正在逐渐改变我的想法,因为最终有两个不同的命名约定 – 例如:

 // This must be undescored due to naming constrictions setContentView(R.layout.my_long_layout_name); // Now this looks a little out of place findViewById(R.id.myLongSpecificId); 

我也想知道这里的标准。 谷歌在他们的例子是不一致的; 有时他们使用全部小写,有时他们插入下划线,有时他们使用骆驼案件。

如果你看看android.R.id.*字段,你会发现它们都是驼峰式的。 所以如果android的ids是骆驼案件,我想我们必须遵循这个惯例:)

我认为他正在讨论一个xml文件中的ID。

例如:

 android:id="@+id/home_button" 

 android:id="@+id/HomeButton" 

在这个问题上,我还没有find任何约定或指导方针,所以我的项目中的开发人员使用这两种方法不太明显,这是相当痛苦:(

如果我们使用所有带下划线的小写字母,我认为是好的。

只要看看这个(加上Daniel所回答的)

  // Camel Case TextView tvUserName = (TextView) findViewById(R.id.tvUserName); 
  // Small Caps and Underscores TextView tvUserName = (TextView) findViewById(R.id.tv_user_name); 

在我自己的经验中,我倾向于在xml中对骆驼大小写约定有些困惑,因为当你将它链接到也使用骆驼大小写的Java(因为它是标准的)时,它看起来像是一个doppleganger。

如果你看一些谷歌应用程序样本,如:

https://github.com/google/iosched

他们使用下划线。 所以….也许这是我们应该如何做呢?

xml文件名(这是在可绘制文件夹中使用的)必须全部由小写字母_分开,因为在xml中不支持大写的文件名。

如果Android的编译器真的在做你说的限制骆驼事件(这看起来很奇怪),那么你应该坚持既定的约定。

反对粮食只会造成不必要的混乱。 保持事物在所有可能的地方保持一致。

我认为,如果我们在xml文件中使用下划线约定,并且为类字段使用骆驼大小写约定,那么它将为每个开发人员提供更好的可见性,以区分xml id和class字段。