代码之家  ›  专栏  ›  技术社区  ›  Juri

Android ID命名约定:带下划线的小写与驼色小写

  •  80
  • Juri  · 技术社区  · 15 年前

    我目前正在为Android编程一个应用程序。现在我发现您不能将资源对象,比如说,一个图像放在可绘制文件夹中,并将其命名为“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模拟器上编译和工作得很好,不过-正如您所看到的-我用camel-case语法指定了ID。

    现在,Android示例总是使用小写和下划线。这仅仅是一种使用小写字母和下划线作为ID的命名约定,还是可能会在实际设备上造成问题?

    谢谢

    9 回复  |  直到 7 年前
        1
  •  81
  •   Dan Lew    15 年前

    如果您使用camel case id名称,设备将不会发出投诉。对于我的第一个应用程序,我在CAMEL案例中编写了所有的IDS,因为我认为它在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);
    

    我也很想知道这里的标准。谷歌的例子不一致;有时他们使用小写字母,有时他们插入下划线,有时他们使用驼色大小写。

        2
  •  12
  •   Kiril Aleksandrov    11 年前

    如果你看看 android.R.id.* 字段中,您会注意到所有字段都是驼色的。因此,如果Android ID是用camel编写的,我想我们必须遵循这个约定:)

        3
  •  9
  •   ahmed hamdy    10 年前

    我想他是在说身份证 xml 文件。

    例如:

    android:id="@+id/home_button"
    

    对战

    android:id="@+id/HomeButton"
    

    在这方面,我没有发现任何约定或指导原则,因此我的项目中的开发人员正在模糊地使用这两种方法,这是非常痛苦的:(

        4
  •  4
  •   Rogene Sagmit    12 年前

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

    看看这个(加上丹尼尔的回答)

      // 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时,它看起来像是一个DopPrGeGrand。

        5
  •  4
  •   Micro    9 年前

    如果你看看谷歌的一些应用程序示例,比如:

    https://github.com/google/iosched

    它们使用下划线。所以…也许我们应该这样做?

        6
  •  1
  •   Paul    14 年前

    XML文件名(这是可绘制文件夹中使用的文件名)必须全部小写,并用下划线字符分隔,因为XML中不支持大写的文件名。

        7
  •  0
  •   Brock Woolf    15 年前

    如果Android的编译器确实在做你所说的限制camel大小写(这看起来很奇怪),那么你应该坚持既定的惯例。

    违背谷粒只会造成不必要的混乱。 尽可能在所有地方保持一致。

        8
  •  0
  •   Yasir Ali    9 年前

    我认为,如果我们在XML文件中对ID使用下划线约定,在类字段中使用camel-case约定,那么每个开发人员都可以更好地了解XML ID和类字段之间的区别。

        9
  •  0
  •   Samet ÖZTOPRAK    7 年前
    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));
    

    首先,没有一个标准来定义哪一个更有效,但我有几个理由来证明这一点。 用CAMEL CASE约定将XML ID和Java变量保持在完全相同的名称中是合理的。

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

    2-)Butterknife库定义

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

    这样比较合适。