我目前正在为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
答案 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)
答案 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约定完全相同的名称。
通过搜索XML和Java端的项目很容易到达变量。
butterKnife库定义
@BindView(R.id.infoTextView) TextViewFont infoTextView;
以这种方式保持更合适。