[android] 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에 밑줄과 함께 소문자를 사용하는 명명 규칙입니까, 아니면 실제 장치에서 문제를 일으킬 수 있습니까?

고마워



답변

낙타 케이스 ID 이름을 사용하면 장치가 불평하지 않습니다. 내 첫 번째 응용 프로그램의 경우 모든 ID를 낙타 케이스로 작성했습니다. Java 코드에서 더 잘 보이고 잘 작동한다고 생각하기 때문입니다.

하지만 낙타 케이스에 대해서는 천천히 마음을 바꾸고 있습니다. 두 가지 다른 이름 지정 규칙을 사용하기 때문입니다. 예를 들면 다음과 같습니다.

// 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은 그들의 예에서 일관성이 없습니다. 때로는 모두 소문자를 사용하고 때로는 밑줄을 삽입하고 때로는 낙타 대문자를 사용합니다.


답변

android.R.id.*필드 를 살펴보면 모두 낙타 케이스에 있음을 알 수 있습니다. 따라서 Android ID가 낙타 케이스로 작성되면이 규칙을 따라야한다고 생각합니다. 🙂


답변

밑줄이있는 소문자를 모두 사용하면 좋을 것 같아요.

이것 좀 봐 (다니엘이 대답 한 것에 추가)

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

내 경험상 xml의 낙타 케이스 규칙을 약간 혼동하는 경향이 있습니다. 왜냐하면 낙타 케이스를 사용하는 Java에 링크하면 (표준이기 때문에) 도플 갱어처럼 보입니다.


답변

xml 파일의 id에 대한 밑줄 규칙과 클래스 필드에 대한 camel case 규칙을 사용하면 모든 개발자가 xml ID와 클래스 필드를 구별하기 위해 더 나은 가시성을 제공 할 것이라고 생각합니다.


답변

다음과 같은 Google 앱 샘플을 살펴보면 다음과 같습니다.

https://github.com/google/iosched

밑줄을 사용합니다. 그래서 …. 우리가 그렇게해야할까요?


답변

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 모두에서 프로젝트를 검색하여 변수에 쉽게 도달 할 수 있습니다.

  2. butterKnife 라이브러리 정의

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

이런 식으로 보관하는 것이 더 적절합니다.


답변

xml 파일 이름 (드로어 블 폴더에서 사용되는 이름)은 xml에서 대문자로 된 파일 이름이 지원되지 않으므로 모두 밑줄 문자 _로 구분되어야합니다.