Skip to content

Android Coding Convention

박민우 edited this page Mar 23, 2022 · 2 revisions

Android Coding Convention


목차


1. 기본

기본적으로 공식문서인 Kotlin Coding ConventionsKotlin style guide를 준수한다.

1.1. 안드로이드 스튜디오

안드로이드 스튜디오의 Optimize imports 기능과 Reformat Code 기능을 이용한다.

  • Optimize imports (Ctrl+Alt+O) : 사용하지 않는 Class를 import하고 있는 경우 제거해준다.
  • Reformat Code (Ctrl+Alt+L) : 코드의 Kotlin Style Guide를 적용하여 Code를 Reformat한다.


2. Resource Naming Convention

2.1. ID

View(activity, fragment 등) 이름의 Pascal Case를 축약하여 Snake Case로 변환한 것을 Prefix로 사용한다. View의 이름이 여러 단어로 되어있을 때는, 각 단어를 소문자로 붙여서 쓴다.

2.1.1. Prefix

<WHAT>_<WHERE>_<DESCRIPTION>
View Prefix
TextView tv_main
ImageView iv_main
EditText et_login
Button, ImageButton btn_login
Toolbar tb_login
ConstraintLayout cl_login
LinearLayout ll_login
BottomNavigationView bnv_login
.. ..

2.1.2. 예시

@+id/tv_main_title
@+id/et_signup_password
@+id/btn_signin_check
@+id/iv_detailcardyou_card

2.2. Layout

Layout의 xml 파일의 이름은 .kt .java의 Pascal Case를 Snake Case로 변환하여 사용한다.

2.2.1. Prefix

<WHAT>_<WHERE>
View Prefix
Activity activity_
Fragment fragment_
Dialog dialog_
CustomView view_
Item item_

2.2.2. 예시

SignInActivity.kt -> activity_sign_in.xml
SignUpFragment.kt -> fragment_sign_up.xml
CustomCalendarView.kt -> view_custom_calendar.xml
item_user.xml

2.3. Drawable

2.3.1. Prefix

<WHAT_DESCRIPTION>
Drawable Prefix
Icon ic_
Image img_
Background bg_
Shape <shape>_<color>_<radius>_<value>
  • background 네이밍 bg_bg color_radius dp_stroke_stroke color_stroke dp

  • icon, image, shape은 최대한 알아보기 쉽게 알아서 잘

  • rectangle은 사용 x, background로 다 사용

2.3.2. 예시

ic_error.xml
img_default_user.xml
bg_main.xml
rectangle_yellow_20dp_stroke_blue_8dp.xml

2.4. Menu

2.4.1. Prefix

menu_

2.5. Color

Color의 이름은 Snake Case를 이용해 작성하되, 사이트를 참고해 Color를 직관적으로 연상할 수 있는 이름을 사용한다.

2.5.1. 예시

<color name="signup_red">#FF0000</color>
<color name="answers_circle">#F0F0F0</color>
<color name="detail_circle">#F0F0F0</color>

2.6. String

String 작성 시 주석을 통해 String이 사용되는 곳을 명시한다.

2.6.1. Prefix

<WHERE/WHAT>_<DESCRIPTION>

2.6.2. 예시

<!--Main Menu-->
<string name="menu_daily">하루의 기록</string>
<string name="menu_remind">평가 및 회고</string>
<string name="menu_my">My</string>

<!--Toolbar Title-->
<string name="title_search">검색</string>
<string name="title_settings">환경설정</string>

<!--Dialog Message-->
<string name="msg_login">로그인하시겠습니까?</string>
<string name="msg_login_failed">로그인에 실패했습니다.</string>
<string name="msg_password_error">비밀번호가 올바르지 않습니다.</string>

2.7. Style

View의 Pascal Case와 Style에 대한 설명을 조합하여 Style 명을 지정한다.

2.7.1. Prefix

<WHAT><Description>Style

2.7.2. 예시

<style name="LoginEditTextStyle"/>
<style name="MainDialogStyle"/>


3. Kotlin Naming Convention

3.1. Class

클래스 파일 이름은 UpperCamelCase(파스칼 케이스(PascalCase))로 작성한다.

3.1.1. Prefix

<DESCRIPTION><WHAT>

Prefix는 해당 클래스와 관련성이 높은 것으로 임의로 작성한다.

3.1.2. 예시

MainActivity
UserViewModel
WriteFragment

3.2. Method

메소드 이름은 lowerCamelCase로 작성한다.

3.2.1. Prefix

"동사"로 시작하는 "동사구" 형태를 사용하되, 동사 원형만을 사용한다. 자주 사용하는 동사는 용법에 맞게 사용한다.

Word Description
show Invisible한 것을 Visible하게 바꾸는 동작
check 어떤 것을 확인한 후 boolean 또는 값으로 반환하는 동작
is 어떤 것인지 확인한 후 boolean으로 반환하는 동작
has 어떤것을가지고 있는 확인 후 boolean으로 반환하는 동작

3.2.2. 예시

showList
updateContacts

3.3. Variable

변수 이름 또한 마찬가지로 lowerCamelCase로 작성한다.

3.3.1. 예시

isEnd
viewPagerAdapter

기타 추가 사항

  • Response data class @serialize 붙이기
  • strings 사용하기 => 같은 string 이라도 쓰는 뷰에 따라서 다르게 만들기
  • data class inner class로 사용

참고