Android 명명 규칙


81

철저한 Android 명명 규칙 제안을 찾고 있습니다. 여기서 조금 발견했습니다.

http://source.android.com/source/code-style.html#follow-field-naming-conventions

그것은 말한다 :

  • 비공개, 비 정적 필드 이름은 m으로 시작합니다.
  • 정적 필드 이름은 s로 시작합니다.
  • 다른 필드는 소문자로 시작합니다.
  • 공개 정적 최종 필드 (상수)는 ALL_CAPS_WITH_UNDERSCORES.

그러나 저는 Android의 모든 측면을 다루는 훨씬 더 광범위한 것을 찾고 있습니다.

  • 레이아웃과 뷰의 이름을 지정하는 방법,
  • 메뉴 이름 지정 방법
  • 스타일 이름 지정 방법
  • 데이터베이스 테이블 (단수, 복수) 및 필드의 이름을 지정하는 방법
  • 기타

일반적으로 받아 들여지는 제안이 있다면 나는 그것을 따르고 싶습니다. 모든 SDK는 고유 한 방식으로 진행되는 것 같아서 Android 방식에 특히 관심이 있습니다.


1
이것이 Google의 첫 번째 히트작이므로 Android-Studio와 Eclipse 모두에서 "리팩터링"을 사용하여 추가 할 것이라고 생각했습니다. 이름을 바꾸고 모든 항목을 변경할 수 있습니다. 명명 규칙에 대해 까다롭기 때문에 이것은 나에게 유용했습니다. 따라서 내 검색. 특정 인스턴스의 이름을 바꾸는 것은 매우 쉽습니다.
Eric Anthony

Google 코딩 스타일을 무시하십시오. 충분히 설명되지 않았으며 전체 전환도 아닙니다. 모든 회사 / grp에는 고유 한 코딩 전환이 있기 때문에 국제 코딩 전환이 없습니다. 자신의 것을 사용하십시오.
Yousha Aleayoub

답변:


88

ribot의 Android 가이드 라인 은 표준 명명 규칙의 좋은 예입니다.

XML 파일의 명명 규칙 :

activity_<ACTIVITY NAME>.xml - for all activities
dialog_<DIALOG NAME>.xml - for all custom dialogs
row_<LIST_NAME>.xml - for custom row for listview
fragment_<FRAGMENT_NAME>.xml - for all fragments

xml 파일의 구성 요소 / 위젯에 대한 명명 규칙 :

모든 구성 요소 X의 활동은 모든 구성 요소가 접두사 또는 같은 짧은 이름이 있어야 활동 이름으로 시작해야합니다 BTN 에 대한 Button 예를 들어, 로그인 활동 구성 요소의 이름은 다음과 같이해야합니다.

activity_login_btn_login
activity_login_et_username
activity_login_et_password

주요 구성 요소의 짧은 이름 :

Button - btn
EditText - et
TextView - tv
ProgressBar - pb
Checkbox - chk
RadioButton - rb
ToggleButton - tb
Spinner - spn
Menu - mnu
ListView - lv
GalleryView - gv
LinearLayout -ll
RelativeLayout - rl

6
당신 (또는 당신의 모든 회사)이 어디에서 왔는지 관심이있는 1 스타일을 adpot하는 한 .. 지금까지 4 개 정도의 간단한 안드로이드 앱을 만들었고 이것과 거의 동일한 규칙을 만들었습니다. 나는 그것이 당신이 필요한 전부라고 생각합니다. 너무 길기 때문에 나는 'activity'대신 'a_'를 사용합니다 lol
Srneczek

활동 이름으로 구성 요소 이름을 시작해야합니까? 어쨌든 각 레이아웃 파일 내의 이름을 참조 할 것입니다.
szedjani

1
그 정말 필요하지 않지만 프로젝트가 그 시간을 성장 때 매우 도움이 될 것입니다
Pravin Bhosale

5
MainActivity + activity_main? 이것이 표준이라는 것을 알고 있지만 누가 이것을 발명 했습니까? 가장 직관적이지 않은데, 특히 조각이 들어올 때 이름이 길어지는 이유.
brainray

개인적으로 나는이 매우 일관 찾을 수 없습니다
이드로

28

다음은 https://github.com/futurice/android-best-practices 로 시작하는 훌륭한 모범 사례 모음입니다.

여기 내가 사용하는 것이 있습니다. 이 링크에서도 복사하겠습니다.

개체 이름 지정

  • Google 가이드 라인에 따라 m또는 s접두사를 사용하지 마세요 . 나는 몇 년 동안 멈 췄고 그들 없이는 더 쉽다는 것을 알았습니다. IDE는 비공개 또는 정적 무언가를 사용할 때 알려줍니다. 쓸모없는 관습처럼 보입니다.
  • 상수는 대문자로 시작합니다.
  • 두문자어는 첫 글자 만 대문자로 표기해야합니다. 예를 들어 functionUrlunitId. 아닙니다 unitID.
  • 개체 유형의 접두사입니다. 예를 들어 이름이 포함 된 TextView는 tvName. 암호가있는 EditView는 etPass.
  • 일반적으로 활동에서 한 번만 사용되는 경우 (예 : ListView)라고 부르는 것을 두려워하지 마십시오 lv.
  • 객체 유형이 아닌 경우 기능으로 이름을 지정하십시오. 예를 들어 ID가 포함 된 문자열 인 경우 이름을 idstringId가 아닌으로 지정합니다. IDE는 그것이 문자열, float 또는 long 일 때 알려줄 것입니다.
  • 읽기 쉽게 유지하십시오. Pass대신 같은 것을 사용하십시오 Password.
  • XML 내에서 이름은 대문자없이 밑줄이어야합니다 (예 : tv_nameet_pass
  • android:idXML의 첫 번째 속성으로를 넣으십시오 .

파일 이름 지정

  • 유형을 접두사로 배치합니다. 예 fragment_contact_details.xml, view_primary_button.xml, activity_main.xml.
  • 클래스의 경우 폴더로 분류하되 접미사를 사용하십시오. 예를 들어, /activities/MainActivity.java또는 /fragments/DeleteDialog.java. 내 폴더는 활동, 조각, 어댑터, 모델유틸리티 입니다.
  • 어댑터는 사용 방법과시기를 알려야합니다. 따라서 ChatActivity 용 ListView 어댑터를 ChatListAdapter.

colors.xml 및 dimens.xml을 팔레트로 사용

  • 색상의 경우 gray_light, 아닌 같은 이름을 사용합니다 button_foreground.

  • 차원의 경우 spacing_large, 아닌 같은 이름을 사용합니다 button_upper_padding.

  • 버튼 색상이나 패딩에 특정한 것을 설정하려면 스타일 파일을 사용하십시오.

strings.xml

  • 네임 스페이스와 유사한 키로 문자열 이름을 지정하고 두 개 이상의 키에 대해 값을 반복하는 것을 두려워하지 마십시오.

  • 사용 error.message.network하지 않고 network_error.

추리

명명 규칙의 목적은 모든 것을 깔끔하고 일관성있게 만드는 것이 아닙니다 . 가능한 실수를 표시하고 워크 플로를 개선하기 위해 있습니다. 이들 중 대부분은 키보드 단축키에 편리하도록 설계되었습니다. 멋지게 보이기보다는 버그를 최소화하고 워크 플로우를 개선하는 데 집중하십시오.

접두사는 "그 TextView의 이름이 무엇입니까?" 순간.

접미사는 그런 방식으로 자주 액세스하지 않지만 혼란 스러울 수있는 항목에 대한 것입니다. 예를 들어, 내 코드를 해당 페이지의 Activity, Fragment 또는 Adapter에 넣었는지 확실하지 않을 수 있습니다. 원하는 경우 드롭 할 수 있습니다.

XML ID는 종종 소문자로되어 있으며 모든 사람이 이런 식으로하는 것처럼 보이기 때문에 밑줄을 사용합니다.


클래스 이름은 어떻습니까? 예 : ActivityMain또는 MainActivity. 어느 것을 추천 하시겠습니까? CLASS : NameActivity, LAYOUT : name_activity, COMPONENT : nameactivity_component_name. 이에 대한 예는 MainActivity, main_activity, mainactivity_btn_cancel입니다
Jethro

4
나는 m과 s 접두사를 사용하고 있습니다. 나는 그것이 매우 유용하다는 것을 알았고 코드를 더 나쁘게 만들지 않습니다. 또한 때로는 IDE없이 일부 파일을 여는 것을 선호합니다. 필드와 간단한 변수를 구분하는 것은 매우 쉽습니다.
Arkadiusz Cieśliński

지금은 Camera2 예제를보고 있는데 mBackgroundHandler등이 어디에서 왔는지 정말 신경 쓰지 않으므로 이름을 지정 backgroundHandler하면 중요한 정보가 왼쪽에 표시됩니다. 필요한 경우 매개 변수에 ' '접미사를 추가하고 지역 변수에 '_ '접미사를 추가하면 집중할 필요가없는 한 시각적으로나 정신적으로 밑줄을 건너 뛸 수 있습니다.
WillC

13

일관성
( CONSISTENCY) 모든 사람 (팀으로 일하지 않는 한)은 자신 만의 규칙을 갖게되며 어떤 규칙을 선택하든 상관 없습니다. 전체 응용 프로그램에서 일관성 이 있는지 확인하는 것이 중요합니다.


구조
개인적으로 클래스 이름에서 구성 요소까지 실행되고 xml 전체에서 일관성이 있으므로 이와 같은 명명 규칙을 사용합니다.

  • 클래스 :<ClassName>
  • 활동 :<ClassName>**Activity**
  • 레이아웃 :classname_activity
  • 구성 요소 ID :classname_activity_component_name

이 예제가 될 것이다 OrderActivity.class, order_activity.xml, order_activity_bn_cancel. 모든 XML은 소문자로되어 있습니다.


레이아웃 삭제
짧은 이름을 사용하여 코드를 깔끔하게 유지하려면; 또 다른 방법은 레이아웃뿐만 아니라 XML의 모든 이름 을 축약 하는 것입니다.

예를 들면 OrderActivity .class : ord_act .xml, ord_act _bt_can, ord_act _ti_nam, ord_act _tv_nam입니다. 나는 이름을 세 개로 나누지 만 이것은 얼마나 많은 비슷한 이름을 가지고 있는지에 달려 있습니다.


구성 요소 유형
축약 구성 요소 유형을 축약 할 때도 일관성을 유지하십시오. 나는 일반적으로 구성 요소 유형에 두 글자를 사용하고 이름에 세 글자를 사용합니다. 그러나 레이아웃에서 해당 유형의 유일한 요소 인 경우 이름이 필요하지 않을 수 있습니다. ID의 원칙은 고유해야합니다.

  • 구성 요소 ID :nam_act_component_nam

구성 요소 유형 약어 (이 목록에는 충분한 두 글자가 표시됨)
프레임 레이아웃 : fl
선형 레이아웃 : ll
테이블 레이아웃 : tl
테이블 행 : tr
그리드 레이아웃 : gl
상대 레이아웃 : rl

텍스트보기 : tv
버튼 : bt
확인란 : cb
스위치 : sw
토글 버튼 : tb
이미지 버튼 : ib
이미지보기 : iv
진행률 표시 줄 : pb
탐색 표시 줄 : sb
등급 표시 줄 : rb
Spinner : sp
WebView : wv
텍스트 편집 : et

라디오 그룹 : rg
목록보기 : lv
그리드보기 : gv
확장 가능한 목록보기 : el
스크롤보기 : sv
수평 스크롤보기 : hs
검색보기 : * se
탭 호스트 : th
비디오보기 : vv
다이얼러 필터 : df

포함 : ic
조각 : fr
사용자 정의보기 (기타) : cv


2
라디오 버튼 = 등급 표시 줄?
Mitch

8

나는 이것에 대한 관습이 아직 없다고 생각합니다. 각 회사마다 고유 한 규칙이 있으며 여기에서는 누구도 그것에 대해별로 신경 쓰지 않는다고 생각합니다.

저에게는 이름을 컨텍스트에 묶는 것을 선호합니다. 예를 들어 "MainActivity"라는 활동이있는 경우 해당 레이아웃 이름은 "main_activity.xml"이되고이 활동과 관련된 각 리소스에 대해 접두사 "main_activity"를 추가하여 사용함을 알 수 있습니다. 이 활동에 사용 된 ID도 마찬가지입니다.

내가 그 이름을 사용하는 이유는 이름이 매우 독특하기 때문에 Android 라이브러리를 사용하면 다른 이름으로 대체되지 않기 때문입니다.

또한 가능한 한 의미있는 이름을 지정하려고 시도하므로 일반적으로 "listView"또는 "imageView2"가 ids로 표시되지 않지만 "contactsListView"및 "contactImageView"와 같은 것입니다. 더 쉽게 찾을 수 있도록 동일한 이름 (또는 유사한 이름)이 Java 코드 내의 변수와 일치합니다.

간단히 말해서 내 팁은 다음과 같습니다.

  • 이름 안에 숫자를 넣지 않도록하십시오. 그들은 일반적으로 많은 의미가 없으며 UI 디자이너를 위해 드래그 앤 드롭 만 사용했음을 보여줍니다.

  • 데모, POC 및 여기에있는 질문의 경우 이름 지정에 대해 걱정하지 마십시오.

  • 리소스의 모든 이름 (ID 포함)에 접두사를 추가하여 리소스가 속한 컨텍스트를 표시하고 고유성을 얻으십시오.

  • 가능하면 의미있는 이름을 지정하십시오.


2

최신 Android Eclipse 플러그인은 새 프로젝트를 만들 때 자동으로 언급하는 일부 파일을 만듭니다. 그로부터 이름은 다음과 같습니다.

layout/activity_main.xml
menu/activity_main.xml
...

나는 예를 들어이 계획을 따랐다.

layout/fragment_a.xml
layout/fragment_b.xml
...

따라서 일반에서 세부까지 패키지 이름과 비슷합니다. 또한 깔끔한 정렬이 가능합니다.


1

모든 신체는 자신의 것을 사용합니다. 주요 목표는 특히 다른 사람이 코드를 읽을 때 실수와 오해를 피하는 것입니다. 구문 강조 표시와 최신 IDE의 자동 코드 검사로 인해 의미가 덜합니다.

그러나 이러한 명명 규칙은 코드 완성 기능이 켜져있을 때 매우 편리합니다. 예를 들어 입력 m하고 자동 완성하면 클래스 필드 목록이 표시됩니다.

그러나 여러 번 당신은 그러한 규칙을 사용하지 않는 다른 사람의 코드로 작업해야합니다. 이러한 보호 된 변수와 재정의 된 메서드 매개 변수는 혼란을 더합니다.

몇 가지 예 :

  • 클래스 변수 앞에 m을 _붙이고 단어 를 구분 하여 정적 결승 변수를 모두 대문자로 만듭니다 . 더 낮은 범위 변수에 접두사를 붙이지 마십시오.

  • UI 부모 뒤의 이름 레이아웃 (예 act_main.xml: frg_detail.xml,, itm__act_main__list1.xml; 활동 MainActivity, 조각 DetailFragment, 항목 레이아웃의 경우 각각 id가 있는 ListViewin에 대해 .MainActivitylist1

  • xml 레이아웃 lsv__act_main__list1에서 ListView 및 btn__act_main__submit`Button 요소에 대한 이름 요소 ID . 이렇게하면 자동 완성 기능으로 훨씬 쉽게 찾을 수 있습니다.


thx-나에게있어서 코딩 규칙은 강력한 IDE 시대에 정말 무의미한 것이 아닙니다. 그냥 제가 받아 들여서 좀 더 일반적으로 받아 들여지는 것들을 찾기를 바랍니다
dorjeduck

괜찮아. 다른 이점도 있습니다. LogCat에서 UI 뷰의 ID를 볼 수 있고 ID에서 그것이 무엇인지, 코드에서 찾을 위치를 알 수 있습니다.
SD

나는 접두사에 대한 완전한 이름으로 갈 것 : activit_main.xml, fragment_main.xml, button_activity_main_submit.xml, 등
라몬 가르시아 - 페레즈

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.