철저한 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는 비공개 또는 정적 무언가를 사용할 때 알려줍니다. 쓸모없는 관습처럼 보입니다. - 상수는 대문자로 시작합니다.
- 두문자어는 첫 글자 만 대문자로 표기해야합니다. 예를 들어
functionUrl
및unitId
. 아닙니다unitID
. - 개체 유형의 접두사입니다. 예를 들어 이름이 포함 된 TextView는
tvName
. 암호가있는 EditView는etPass
. - 일반적으로 활동에서 한 번만 사용되는 경우 (예 : ListView)라고 부르는 것을 두려워하지 마십시오
lv
. - 객체 유형이 아닌 경우 기능으로 이름을 지정하십시오. 예를 들어 ID가 포함 된 문자열 인 경우 이름을
id
stringId가 아닌으로 지정합니다. IDE는 그것이 문자열, float 또는 long 일 때 알려줄 것입니다. - 읽기 쉽게 유지하십시오.
Pass
대신 같은 것을 사용하십시오Password
. - XML 내에서 이름은 대문자없이 밑줄이어야합니다 (예 :
tv_name
및et_pass
android:id
XML의 첫 번째 속성으로를 넣으십시오 .
파일 이름 지정
- 유형을 접두사로 배치합니다. 예
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가 있는ListView
in에 대해 .MainActivity
list1
-
xml 레이아웃
lsv__act_main__list1
에서 ListView 및btn__act_main__submit
`Button 요소에 대한 이름 요소 ID . 이렇게하면 자동 완성 기능으로 훨씬 쉽게 찾을 수 있습니다.
답변
명명 규칙 및 / 또는 모범 사례 와 관련하여 프로젝트 및 코딩 지침이 포함 된 github 의 ribot / android-guidelines 저장소 의이 md 파일 을 자주 따릅니다 .