Skip to content

Coding Convention

Jaemin Yoo edited this page Mar 15, 2023 · 4 revisions

omos-aos ν”„λ‘œμ νŠΈλŠ” μ•„λž˜μ™€ 같은 μ½”λ”© μ»¨λ²€μ…˜μ„ λ”°λ¦…λ‹ˆλ‹€.

기본적으둜 μ•ˆλ“œλ‘œμ΄λ“œ Kotlin μŠ€νƒ€μΌ κ°€μ΄λ“œμ™€ Kotlin Coding convetion 곡식 λ¬Έμ„œμ˜ μŠ€νƒ€μΌ κ°€μ΄λ“œλ₯Ό λ”°λ¦…λ‹ˆλ‹€.

1. File naming

1-1. Class files

λͺ¨λ“  클래슀 파일λͺ…은 파슀칼 μΌ€μ΄μŠ€λ‘œ μž‘μ„±λ©λ‹ˆλ‹€. / ex: MainActivity, FirstFragment, OmosDialog

1-2. Resource files

λͺ¨λ“  λ¦¬μ†ŒμŠ€ 파일λͺ…은 μŠ€λ„€μ΄ν¬ μΌ€μ΄μŠ€λ‘œ μž‘μ„±λ©λ‹ˆλ‹€. / ex: activity_main, fragment_first, menu_bottom_nav

1-2-1. Drawable files

  • 메뉴, λ²„νŠΌ 등에 λŒ€ν•œ μ•„μ΄μ½˜μ€ ic_이름 으둜 ν‘œν˜„ν•©λ‹ˆλ‹€. / ex: ic_home, ic_omos_title
  • 사진과 같이 λ²‘ν„°λ‘œ ν‘œν˜„ν•˜κΈ° νž˜λ“  μ΄λ―Έμ§€λŠ” img_이름 으둜 ν‘œν˜„ν•©λ‹ˆλ‹€. / ex: img_main_screen

1-2-2. Layout files

  • λ ˆμ΄μ•„μ›ƒ 파일λͺ…은 μ»΄ν¬λ„ŒνŠΈ 이름을 μ‹œμž‘μœΌλ‘œν•œ μŠ€λ„€μ΄ν¬ μΌ€μ΄μŠ€λ‘œ μž‘μ„±λ©λ‹ˆλ‹€.
  • RecyclerView와 같은 리슀트 ν˜•μ‹ μ•„μ΄ν…œ λ ˆμ΄μ•„μ›ƒμ€ item_이름 으둜 μž‘μ„±λ©λ‹ˆλ‹€.
  • include νƒœκ·Έλ‘œ μž¬μ‚¬μš©ν•  수 μžˆλŠ” λ ˆμ΄μ•„μ›ƒμ€ layout_이름 으둜 μž‘μ„±λ©λ‹ˆλ‹€.
Component Class Name Layout Name
Activity MainActivity activity_main.xml
Fragment HomeFragment fragment_home.xml
Dialog DoubleCheckDialog dialog_double_check.xml
AdapterView item --- item_record.xml
Include layout --- layout_input.xml

1-2-3. Menu files

λͺ¨λ“  메뉴 파일λͺ…은 menu_이름 으둜 μž‘μ„±λ©λ‹ˆλ‹€. / ex: menu_bottom_nav, menu_overflow

1-2-4. Value files

λͺ¨λ“  κ°’ 파일λͺ…은 λ³΅μˆ˜ν˜•νƒœμ˜ λ‹¨μ–΄λ‘œ μž‘μ„±λ©λ‹ˆλ‹€. / ex: strings.xml, styles.xml, themes.xml, colors.xml, dimens.xml, attrs.xml

2. Kotlin

2-1. Import

νŠΉμ • 라이브러리λ₯Ό κ°€μ Έμ˜¬ λ•Œ 라이브러리의 λͺ¨λ“  λ©”μ„œλ“œλ₯Ό κ°€μ Έμ˜€λŠ” * μ •κ·œν™”λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
μžλ™μœΌλ‘œ import ꡬ문이 * 둜 λ³€κ²½λ˜λŠ” κ²½μš°μ—λŠ” μ„€μ •μ—μ„œ ν•΄λ‹Ή κΈ°λŠ₯을 ν•΄μ œν•©λ‹ˆλ‹€.

import

Good (o)

import foo.Bar

Bad (x)

import foo.*

3. XML

3-1. id

  • λͺ¨λ“  뷰의 idλŠ” μŠ€λ„€μ΄ν¬ μΌ€μ΄μŠ€λ‘œ μž‘μ„±λ©λ‹ˆλ‹€. / ex: tv_title, et_password
  • λ·° 그룹의 경우 Layout을 μ œμ™Έν•œ 이름을 ν‘œν˜„ν•©λ‹ˆλ‹€. / ex: LinearLayout -> linear_
  • 뷰의 이름에 λŒ€λ¬Έμžκ°€ 2개 이상인 경우 각 λŒ€λ¬Έμžλ“€μ„ λ”°μ„œ ν‘œν˜„ν•©λ‹ˆλ‹€. / ex: AbcDeFgh -> adf_
  • 뷰의 이름에 λŒ€λ¬Έμžκ°€ 1개인 경우 λͺ¨λ“  이름을 ν‘œν˜„ν•©λ‹ˆλ‹€. / ex: Abcde -> abcde_
Element Prefix
TextView tv_
EditText et_
ImageView iv_
RecyclerView rv_
ScrollView pb_
NestedScrollView pb_
Button btn_
Menu menu_
ProgressBar pb_
Switch pb_
LinearLayout linear_
ConstraintLayout constraint_
FrameLayout frame_
AbcDeFgh adf_
Abcdef abcdef_

3. Etc

  • μ½”λ“œ μž‘μ„± μ™„λ£Œ μ‹œ Ctrl+Alt+L or Cmd+Opt+L 둜 μ½”λ“œ 정렬을 ν•©λ‹ˆλ‹€. (단, νŠΉμ • 라인의 μ½”λ“œκ°€ 보기 νž˜λ“  경우 μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.)
  • 단어λ₯Ό μ€„μ΄λŠ” 것을 μ§€μ–‘ν•©λ‹ˆλ‹€. / ex: pw -> password