web-dev-qa-db-ja.com

Android id命名規則:アンダースコア付きの小文字とキャメルケースの小文字

現在、Android用のアプリケーションをプログラミングしています。今、私が見つけたのは、リソースオブジェクト、たとえば、画像をドローアブルフォルダーに配置して、「myTestImage.jpg」のように名前を付けることができないということです。キャメルケースの構文は許可されていないため、コンパイラエラーが発生します。そのため、「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

83
Juri

キャメルケースID名を使用しても、デバイスは文句を言いません。最初のアプリケーションでは、Javaのようにコードを作成したほうが見栄えがよく、問題なく動作するため、すべてのIDをキャメルケースで記述しました。

ただし、ラクダケースについては、次の2つの異なる命名規則で終わるため、ゆっくり考えています。

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

私もここの標準について疑問に思います。 Googleはその例で一貫性がありません。時にはすべて小文字を使用し、時にはアンダースコアを挿入し、時にはキャメルケースを使用します。

82
Daniel Lew

Android.R.id.*フィールド、それらすべてがキャメルケースにあることに気付くでしょう。したがって、Android idがキャメルケースで記述されている場合、この規則に従う必要があると思います:)

13

彼はxmlファイル内のIDについて話していると思います。

例えば:

Android:id="@+id/home_button"

versus

Android:id="@+id/HomeButton"

私はこの問題に関する慣習やガイドラインを見つけていないので、私のプロジェクトの開発者は両方の方法を区別なく使用していますが、これは非常に苦痛です:(

10

次のようなGoogleアプリのサンプルの一部を見ると:

https://github.com/google/iosched

アンダースコアを使用します。だから....多分それは私たちがそれを行うべき方法ですか?

4
Micro

アンダースコア付きのすべての小さな文字を使用すると良いと思います。

これを見てください(ダニエルが答えたことに追加)

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

私自身の経験では、XMLのラクダケース規則を少し混乱させる傾向があります。これは、(標準であるため)キャメルケースも使用するJavaにリンクすると、ドッペレンジャーのように見えるためです。

4
Rogene Sagmit
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変数をキャメルケース規則でまったく同じ名前に保持することです。

  1. XMLとJava side。の両方のプロジェクトを検索することにより、変数に簡単にアクセスできます。

  2. butterKnifeライブラリ定義

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

この方法で維持する方が適切です。

2
Samet ÖZTOPRAK

XMLファイルのIDにアンダースコア規則を使用し、クラスフィールドにラクダケース規則を使用すると、すべての開発者がXML IDとクラスフィールドを区別しやすくなります。

2
Yasir Ali

大文字のファイル名はxmlでサポートされていないため、xmlファイル名(ドロアブルフォルダーで使用されるもの)はすべてアンダースコア文字_で区切られている必要があります。

1
Paul