[android] Android 명명 규칙

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

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

그것은 말한다 :

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

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

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

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



답변

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


답변

다음은 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는 종종 소문자로되어 있으며 모든 사람이 이런 식으로하는 것처럼 보이기 때문에 밑줄을 사용합니다.


답변

일관성
( 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


답변

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

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

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

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

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

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

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

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

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


답변

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

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

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

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

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


답변

모든 신체는 자신의 것을 사용합니다. 주요 목표는 특히 다른 사람이 코드를 읽을 때 실수와 오해를 피하는 것입니다. 구문 강조 표시와 최신 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 . 이렇게하면 자동 완성 기능으로 훨씬 쉽게 찾을 수 있습니다.


답변

명명 규칙 및 / 또는 모범 사례 와 관련하여 프로젝트 및 코딩 지침이 포함 된 github 의 ribot / android-guidelines 저장소 의이 md 파일 을 자주 따릅니다 .