Android id命名约定:带有下划线与驼峰情况的小写

时间:2009-12-02 11:17:38

标签: android mobile

我目前正在为Android编写应用程序。现在我发现你不能将资源对象放在drawable文件夹中,并将其命名为“myTestImage.jpg”。这会给你一个编译器错误,因为不允许使用camel case语法,所以你必须像“my_test_image.jpg”那样重命名它。

但是你在XML文件中定义的id呢?假设您有以下定义

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

这是一个有效的定义,在我的Android模拟器上编译和工作正常,尽管 - 如你所见 - 我用驼峰语法语法指定了id。

现在,Android示例总是使用小写和下划线。这只是一个命名约定,使用带有下划线的小写的id或者它可能会导致真实设备出现问题吗?

THX

9 个答案:

答案 0 :(得分:81)

如果您使用驼峰式ID名称,设备不会抱怨。对于我的第一个应用程序,我在camel-case中编写了所有id,因为我觉得它在Java代码中看起来更好,并且它运行得很好。

我正在慢慢改变我对camel-case的看法,因为你最终得到了两种不同的命名约定 - 例如:

// 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);

我也对这里的标准感到好奇。谷歌的例子不一致;有时他们使用全部小写,有时他们插入下划线,有时他们使用驼峰式。

答案 1 :(得分:13)

如果您查看android.R.id.*字段,您会发现所有字段都是驼峰式的。因此,如果android ids是用camel-case编写的,我想我们必须遵循这个约定:)

答案 2 :(得分:10)

我认为他在谈论xml文件中的ID。

e.g:

android:id="@+id/home_button"

android:id="@+id/HomeButton"

我没有在这个问题上找到任何约定或指南,所以我的项目中的开发人员都不明确地使用这两种方法,这非常痛苦:(

答案 3 :(得分:4)

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

看看这个(添加丹尼尔回答的内容)

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

根据我自己的经验,我倾向于对xml中的camel case约定感到困惑,因为当你将它链接到也使用camel case的Java时(因为它是标准的)它看起来像一个doppleganger。

答案 4 :(得分:4)

如果您查看一些Googles应用示例,例如:

https://github.com/google/iosched

他们使用下划线。所以....也许这就是我们应该怎么做的?

答案 5 :(得分:1)

xml文件名(在drawable文件夹中使用的名称)必须全部用小写字母_分隔,因为xml不支持大写文件名。

答案 6 :(得分:1)

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

答案 7 :(得分:0)

如果Android的编译器真正按照你所说的限制驼峰的情况(这看起来很奇怪),那么你应该坚持已建立的约定。

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

答案 8 :(得分:0)

android:id="@+id/frag_account_button"
frag_account_button = ((ListView)view.findViewById(R.id.frag_account_button));

android:id="@+id/fragAccountButton"
fragAccountButton = ((ListView)view.findViewById(R.id.fragAccountButton));

首先,没有一定的标准来定义哪一个更有效,但我有几个理由证明这一点。 我的想法是合理的,将XML id和java变量保持为与camel-case约定完全相同的名称。

  1. 通过搜索XML和Java端的项目很容易到达变量。

  2. butterKnife库定义

    @BindView(R.id.infoTextView)     TextViewFont infoTextView;

  3. 以这种方式保持更合适。