๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Android (Kotlin)

SA ํ…œํ”Œ๋ฆฟ

by ํ‚ค์œค 2023. 12. 28.

SA๐Ÿพ

๊นƒํ—ˆ๋ธŒ ๋งํฌ:

1. ํ”„๋กœ์ ํŠธ ์ œ๋ชฉ / ๊ฐ„๋‹จ ์„ค๋ช…

์•„์ด๋””์–ด ๋ธŒ๋ ˆ์ธ ์Šคํ† ๋ฐ

  •  

์•ฑ ๊ธฐํš

  • ์ œ๋ชฉ : 
  • ๋ชฉ์  : 
  • ํ™”๋ฉด ๊ตฌ์„ฑ : 
  • ๊ธฐํ•œ : 

2. ์™€์ด์–ดํ”„๋ ˆ์ž„

(ํ”ผ๊ทธ๋งˆ ๋งํฌ)

3. ๊ฐœ๋ฐœ ๊ธฐ๋Šฅ ์ •์˜

1) ๋ฉ”์ธ ํŽ˜์ด์ง€

  • ๊ฒŒ์‹œ๋ฌผ ์˜์—ญ๊ฒŒ์‹œ๋ฌผ ์žˆ๋Š” ์˜์—ญ๋งŒ ์Šคํฌ๋กค ๋˜๊ฒŒ ํ•˜๊ธฐ์‚ฌ์šฉ์ž ์ด๋ฆ„์ด ์žˆ๋Š” ๊ตฌ์—ญ์„ ๋ˆ„๋ฅด๋ฉด ๋””ํ…Œ์ผ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)๋”๋ณด๊ธฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ž˜๋ ค์žˆ๋˜ ๊ฒŒ์‹œ๊ธ€์ด ์ „๋ถ€ ๋ณด์ด๊ฒŒ ํ•˜๊ธฐ
  • ๊ฒŒ์‹œ๋ฌผ ์ž‘์„ฑ์ž, ์ด๋ฏธ์ง€, ๊ฒŒ์‹œ๊ธ€ ์ˆœ์œผ๋กœ ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ
  • ์ด๋ฏธ์ง€ ๋˜๋Š” ํ•˜ํŠธ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ข‹์•„์š” ์ˆซ์ž ์ฆ๊ฐ€ & ์ข‹์•„์š” ์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ์‹œํ‚ค๊ธฐ
  • ์Šคํฌ๋กค๋ทฐ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒŒ์‹œ๋ฌผ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์Šคํฌ๋กค ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)
  • ์‚ฌ์šฉ์ž ๋ฆฌ์ŠคํŠธ ์˜์—ญ๊ฐ€๋กœ๋กœ ์Šคํฌ๋กค ๋˜๊ฒŒ ํ•˜๊ธฐ
  • ์Šคํฌ๋กค๋ทฐ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ๋ฆฌ์ŠคํŠธ๊ฐ€ ์Šคํฌ๋กค ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ
  • ์‚ฌ์šฉ์ž ์ด๋ฆ„์ด ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ์ƒ๋‹จ๋ฐ” ์˜์—ญ์ธ์‚ฌ๋ง ์† ์ด๋ฆ„์ด ์‚ฌ์šฉ์ž์— ๋”ฐ๋ผ ๋ณ€ํ•˜๋„๋ก ์„ค์ •ํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)
  • ํ”„๋กœํ•„ ์ด๋ฏธ์ง€๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋งˆ์ด ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)

2) ๋””ํ…Œ์ผ ํŽ˜์ด์ง€

  • ์ƒ๋‹จ ์˜์—ญ์ž์‹ ์˜ ํ”„๋กœํ•„์ด ์•„๋‹์‹œ ํŽธ์ง‘ ๋ฒ„ํŠผ ๋ณด์ด์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ
  • ์ž์‹ ์˜ ํ”„๋กœํ•„์ด ์•„๋‹์‹œ ๋กœ๊ทธ์•„์›ƒ ๋ฒ„ํŠผ ๋ณด์ด์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ
  • ์ขŒ์ธก ์ƒ๋‹จ์— ๋’ค๋กœ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋ฉ”์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)
  • ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒŒ์‹œํ•œ ๊ฒŒ์‹œ๋ฌผ ์˜์—ญ๊ฒŒ์‹œ๋ฌผ ์žˆ๋Š” ์˜์—ญ๋งŒ ์Šคํฌ๋กค ๋˜๊ฒŒ ํ•˜๊ธฐ์ด๋ฏธ์ง€, ๊ฒŒ์‹œ๊ธ€, ๋Œ“๊ธ€ ์ˆœ์œผ๋กœ ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ
  • ๋”๋ณด๊ธฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ž˜๋ ค์žˆ๋˜ ๊ฒŒ์‹œ๊ธ€์ด ์ „๋ถ€ ๋ณด์ด๊ฒŒ ํ•˜๊ธฐ
  • ์ด๋ฏธ์ง€ ๋˜๋Š” ํ•˜ํŠธ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ข‹์•„์š” ์ˆซ์ž ์ฆ๊ฐ€ & ์ข‹์•„์š” ์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ์‹œํ‚ค๊ธฐ
  • ์Šคํฌ๋กค๋ทฐ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒŒ์‹œ๋ฌผ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์Šคํฌ๋กค ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)

3) ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€

  • ์•„์ด๋”” ์ž…๋ ฅ
  • ํšŒ์›๊ฐ€์ž…ํ•˜๊ณ  ๋Œ์•„์™”์„ ๋•Œ ์ฑ„์›Œ์ ธ์žˆ๊ธฐ (โญํ•„์ˆ˜โญ)
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅํšŒ์›๊ฐ€์ž…ํ•˜๊ณ  ๋Œ์•„์™”์„ ๋•Œ ์ฑ„์›Œ์ ธ์žˆ๊ธฐ (โญํ•„์ˆ˜โญ)
  • ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๋ณด์•ˆ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ***๋กœ ํ‘œ์‹œํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)
  • ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ
  • ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ๋ฉ”์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ๋˜๋Š” ์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€ ์ถœ๋ ฅํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)
  • ํšŒ์›๊ฐ€์ž… ๋ฒ„ํŠผ
  • ํšŒ์›๊ฐ€์ž… ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)
  • ์˜ˆ์™ธ์ฒ˜๋ฆฌ
  • ์•„์ด๋””๊ฐ€ ํ‹€๋ฆฌ๊ฑฐ๋‚˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ํ‹€๋ ธ์„ ๋•Œ์— ์•ˆ๋‚ด ๋ฉ”์„ธ์ง€ ํ‘œ์‹œ

4) ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€

  • ์•„์ด๋”” ์ž…๋ ฅ์•„์ด๋”” ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)
  • ์•„์ด๋”” ์ค‘๋ณต ์ฒดํฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๋ณด์•ˆ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ***๋กœ ํ‘œ์‹œํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)
  • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ์นธ ์ž…๋ ฅ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ์นธ์€ ๋ณด์•ˆ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ***๋กœ ํ‘œ์‹œํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)
  • ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๋น„๊ตํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)
  • ํšŒ์›๊ฐ€์ž… ๋ฒ„ํŠผํ™œ์„ฑํ™”๋œ ํšŒ์›๊ฐ€์ž… ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์„ ํƒ ํŽ˜์ด์ง€๋กœ ์ด๋™ (โญํ•„์ˆ˜โญ)
  • ๋ชจ๋“  ์กฐ๊ฑด(์ž…๋ ฅ์นธ์ด ๋น„์–ด์žˆ์ง€ ์•Š๊ณ  ๊ฐ๊ฐ์˜ ์นดํ…Œ๊ณ ๋ฆฌ ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผ) ๋งŒ์กฑ ์‹œ ํ™œ์„ฑํ™”ํ•˜๊ธฐ
  • ์˜ˆ์™ธ์ฒ˜๋ฆฌ
  • ์•ˆ๋‚ด ๋ฉ”์„ธ์ง€ ํ‘œ์‹œ

5) ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ์„ ํƒ ํŽ˜์ด์ง€

  • ์ด๋ฏธ์ง€ ์„ ํƒ ์˜์—ญ
  • ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋งŒ ์„ ํƒ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)
  • ๋‹ค์Œ ๋ฒ„ํŠผ์„ ํƒํ•œ ์ด๋ฏธ์ง€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
  • ํ™œ์„ฑํ™”๋œ ๋‹ค์Œ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ๋ฉ”์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)
  • ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•˜๋ฉด ํ™œ์„ฑํ™”ํ•˜๊ธฐ(๊ธฐ๋ณธ์€ ์ฒซ๋ฒˆ์งธ ์ด๋ฏธ์ง€)

6) ๋งˆ์ด ํŽ˜์ด์ง€

  • ํšŒ์›์ •๋ณด ์ˆ˜์ • ๊ธฐ๋Šฅ
  • ํŽธ์ง‘ ๋ฒ„ํŠผ ํด๋ฆญ์‹œ ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€๋ฅผ ์žฌํ™œ์šฉํ•œ ํŽธ์ง‘ ํŽ˜์ด์ง€๋กœ ์ด๋™
  • ์‚ฌ์šฉ์ž ์ •๋ณด ์ถœ๋ ฅ
  • ํšŒ์›์ •๋ณด๊ฐ€ ์ˆ˜์ •๋๋‹ค๋ฉด ๋ฐ”๋กœ ๋ฐ˜์˜ํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)
  • ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒŒ์‹œํ•œ ๊ฒŒ์‹œ๋ฌผ ๋ชฉ๋ก๊ฒŒ์‹œ๋ฌผ ์žˆ๋Š” ์˜์—ญ๋งŒ ์Šคํฌ๋กค ๋˜๊ฒŒ ํ•˜๊ธฐ์ด๋ฏธ์ง€, ๊ฒŒ์‹œ๊ธ€, ๋Œ“๊ธ€ ์ˆœ์œผ๋กœ ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ
  • ๋”๋ณด๊ธฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ž˜๋ ค์žˆ๋˜ ๊ฒŒ์‹œ๊ธ€์ด ์ „๋ถ€ ๋ณด์ด๊ฒŒ ํ•˜๊ธฐ
  • ์ด๋ฏธ์ง€ ๋˜๋Š” ํ•˜ํŠธ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ข‹์•„์š” ์ˆซ์ž ์ฆ๊ฐ€ & ์ข‹์•„์š” ์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ์‹œํ‚ค๊ธฐ
  • ์Šคํฌ๋กค๋ทฐ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒŒ์‹œ๋ฌผ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์Šคํฌ๋กค ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ (โญํ•„์ˆ˜โญ)

7) ์ด์™ธ์˜ ๊ธฐ๋Šฅ

  • Activity ์ „ํ™˜ ์‹œ animation ๊ตฌํ˜„์•กํ‹ฐ๋น„ํ‹ฐ ์‹œ์ž‘๋  ๋•Œ์™€ ๋๋‚  ๋•Œ์— ์ ์šฉ
  • overridePendingTransition() ์‚ฌ์šฉํ•˜๊ธฐ
  • ์˜์–ด ๋ฒ„์ „์œผ๋กœ ๋ณ€๊ฒฝ ์ ์šฉres/values-en ๋””๋ ‰ํ† ๋ฆฌ ํ™œ์šฉํ•˜๊ธฐ
  • string.xml์—์„œ ๋ฌธ์ž์—ด ๊ด€๋ฆฌํ•˜๊ธฐ
  • ์›ํ˜• ์ด๋ฏธ์ง€๋ทฐ ๊ตฌํ˜„
  • ๋ชจ๋“  ํ”„๋กœํ•„ ์ด๋ฏธ์ง€์— ์ ์šฉ
  • ๋‹คํฌ๋ชจ๋“œ ๊ตฌํ˜„
  • res/values, res/values-night ๋””๋ ‰ํ† ๋ฆฌ ํ™œ์šฉํ•˜๊ธฐ
  • ์‚ฌ์šฉ์ž ์ •๋ณด ๊ด€๋ฆฌ ๊ตฌํ˜„๋”๋ฏธ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
  • add, get, edit, match ํ•จ์ˆ˜ ์ถ”๊ฐ€
  • object class, data class ์‚ฌ์šฉ

4. ์—ญํ•  ๋ถ„๋‹ด

  •  

5. ๋งˆ๊ฐ ๊ธฐํ•œ

  • 12/26
  • 12/27
  • 12/28
  • 12/29

6. ํ˜‘์—… ๊ด€๋ จ ์‚ฌํ•ญ ์กฐ์ •

  • ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค ์‚ฌ์šฉ
  • ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋Š” Nexus 5 API 31 ์‚ฌ์šฉ
  • ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ์ „์—๋Š” ๋งํ•ด์ฃผ๊ธฐ
  • ํ’€ ๋ฆฌํ€˜์ŠคํŠธ์—๋Š” ์ตœ๋Œ€ํ•œ ์ด๋ฆ„๊ณผ ๋‚ด์šฉ์„ ์ž์„ธํžˆ ๊ธฐ๋กํ•˜๊ณ  ํŒ€์›์„ ๋ฆฌ๋ทฐ์–ด๋กœ ๋“ฑ๋กํ•ด ์ตœ์†Œ 1๋ช…์—๊ฒŒ ํ™•์ธ๋ฐ›์€ ํ›„ merge ์ง„ํ–‰
  • Readme.md๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐœ๋ฐœ ์ง„ํ–‰ ๊ธฐ๋ก ์ž‘์„ฑ

7. ์ฝ”๋“œ ์ปจ๋ฒค์…˜

‘๋ฒ ์ด์Šค๋กœ๋Š” Kotlin ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ์— ๋งž์ถฐ ์ง„ํ–‰’

ํด๋ž˜์Šค ์ด๋ฆ„ : PascalCase

ํ•จ์ˆ˜ ์ด๋ฆ„ : camelCase

๋ณ€์ˆ˜ ์ด๋ฆ„ : camelCase

๋ฌธ์ž์—ด ๋ฆฌ์†Œ์Šค ์ด๋ฆ„ : snake_case

๋ฌธ์ž์—ด ์ด๋ฆ„ : (ํŽ˜์ด์ง€_)์šฉ๋„

๋ ˆ์ด์•„์›ƒ ์ด๋ฆ„ : ์†์„ฑ_ํŽ˜์ด์ง€_์œ„์น˜

๋ทฐ ์ด๋ฆ„ : ์†์„ฑ_ํŽ˜์ด์ง€_์šฉ๋„(_์‚ฌ์šฉ๋ฐฉ๋ฒ•)

๋ฆฌ์ŠคํŠธ ๋‚ด ๋ณ€์ˆ˜ : ์—”ํ„ฐ๋กœ ์ •๋ฆฌ

enum class ๋‚ด ๋ณ€์ˆ˜ ์ด๋ฆ„ : ๋ชจ๋‘ ๋‹ค ๋Œ€๋ฌธ์ž

drawable ๋‚ด ์ด๋ฏธ์ง€ ์ด๋ฆ„ : img(_์œ„์น˜)_์šฉ๋„

drawable ๋‚ด ์…€๋ ‰ํ„ฐ ์ด๋ฆ„ : selector(_์œ„์น˜)_์šฉ๋„

drawable ๋‚ด ์•„์ด์ฝ˜ ์ด๋ฆ„ : ic(_์œ„์น˜)_์šฉ๋„

by lazy : ์—”ํ„ฐ๋กœ ๊ตฌ๋ถ„

์กฐ๊ฑด์ด 3๊ฐœ ์ด์ƒ์ผ ๋•Œ : when ์‚ฌ์šฉ

์ฝ”๋“œ ํ•œ ์ค„์„ ์—ฌ๋Ÿฌ ์ค„๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ : ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค์˜ ํฐ ์ค„์„ ๋„˜์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ

๊ธฐ๋ณธ์ ์ธ ์ฝ”๋“œ ์ •๋ฆฌ : CTRL + ALT + L

  • ์‚ญ์ œํ• ๊ฒƒ๋“ค

Commit Convention ์ถ”๊ฐ€

'Android (Kotlin)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Fragment + ๋ฐ์ดํ„ฐ ์ „๋‹ฌ  (0) 2024.01.09
Recycler View ์‚ฌ์šฉ๋ฐฉ๋ฒ•  (0) 2024.01.09
CheckDebugDuplicateClasses Error  (0) 2024.01.05