首页 文章

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

提问于
浏览
80

我目前正在为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或者它可能会导致真实设备出现问题吗?

谢谢

9 回答

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

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

    1-)通过在XML和Java端搜索项目很容易到达变量 .

    2-)butterKnife库定义

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

    以这种方式保持更合适 .

  • 9

    如果您使用camel-case 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);
    

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

  • 0

    如果你看一下 android.R.id.* 字段,你会发现它们都是驼峰式的 . 所以如果android ids是用camel-case编写的,我想我们必须遵循这个惯例:)

  • 4

    我认为他正在讨论 xml 文件中的ID .

    例如:

    android:id="@+id/home_button"
    

    android:id="@+id/HomeButton"
    

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

  • 12

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

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

    //骆驼案
    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

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

    https://github.com/google/iosched

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

  • 0

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

  • 80

    如果Android的编译器真正做你所说的限制驼峰的情况(这似乎很奇怪),那么你应该坚持已 Build 的约定 .

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

  • 1

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

相关问题