ย ์ด๋ฒ ์ฃผ ๋ชฉํย 
โข
[ V ] ์ฝ๋ฉ ํ
์คํธ ์
๋ฌธ ์บ๋ฆฐ๋ ์์ฑ
โข
[ V ] ๊ฐ์ธ ํ๋ก์ ํธ ๋์์ธ ์์
โข
[ ฮ ] ๋์์ธํจํด(MVVM / MVP) ํ์ต
โข
[ V ] ์ด๋ฒ ์ฃผ ๊ฐ์ ์ ๋ฆฌํ์ฌ ๋ธ๋ก๊ทธ ์์ฑ
ย Liked(์ข์๋ ์ )
Kotlin ๋
ํ์์ ๋ฐฐ์ฐ์ง ๋ชปํ ๊ฒ์ ๋ฐฐ์ ๋ค
โข
๋
ํ์ผ๋ก ์๊ฒ ๋๋๊ฑด ? ์ฐ์ฐ์์ lateinit ์ ๋์๋๋ฐ ๋ฌธ๋ฒ์ ์ผ๋ก ๊น๊ฒ ๋ค์ด์ค๋ ๋ชจ๋ฅด๋ ๋ถ๋ถ์ด ๋ง์๋ค. ๊ฐ์๋ฅผ ์ด์ ๋ณด๋ค ์ด์ฌํ ๋ฃ๊ณ ์ฃผ์์ ๋ง์ด ๋ฌ์์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๊ฒ ๋์๋ค.
โข
๋ง๋ฅ Java์ ๋น์ทํ๋ค๊ณ ์๊ฐํ๋๋ฐ Kotlin์์ ์ง์ํ๋ ๊ฒ๋ ๋ง๊ณ , Companion๊ณผ Static์ฒ๋ผ ์ด๋ฆ์ ๋ค๋ฅด์ง๋ง ๊ธฐ๋ฅ์ด ๋น์ทํ ๋ถ๋ถ๋ ์์ด์ ๋ฐฐ์ฐ๋ ๋ฐ ๋ฟ๋ฏํจ์ด ๋๊ปด์ก๋ค.
ย Lacked (์์ฌ์ ๋ ์ )
๋์์ธ ์์ ์ง์ฐฉ
โข
recyclerView๋ฅผ ์ฌ์ฉํ๋๋ฐ ๊ธฐ๊ธฐ ์์ฒด ๋ฉ๋ด๋ฐ ๋๋ฌธ์ ๋ง์ง๋ง item์ด ๊ฐ๋ ค์ก๋ค. ๊ทธ๋ฅ ์งํํด๋ ๋์ง๋ง ์ ์ง ๊ฑฐ์ฌ๋ ค์ ๊ณ์ ๊ณ ์น๊ฒ ๋์๋ค.
โข
์ง๊ธ ๋์์ธ๋ณด๋ค๋ ๊ธฐ๋ฅ ๊ตฌํ์ด ๋จผ์ ๋ผ์ผ๋๋ค๋ ๊ฑธ ์๊ณ ์์ผ๋ฉด์๋ ๊ณ ์น๊ธฐ ์ํด์ ์๊ฐ์ ๋ง์ด ํฌ์ํ๋ค.
ํ ๋ฌ ์ง์ค๋ ฅ ์๋ชจ
โข
๊ทธ ๋์ ์ด์ฌํ ํ๋๋ฐ ์ด๋ฒ ์ฃผ๋ ๊ฐ์ ์ ๋ฆฌํ๋ ๋ฐ์ ์๊ฐ์ ๋ง์ด ํฌ์ํ๋ค. ์ง์ค๋ ฅ์ด ๋ง์ด ๋จ์ด์ง ๊ฒ์ ์ฒด๊ฐํ๊ณ ์กฐ๋ฐ์ฌ์ด ์๊ฒจ๋ฒ๋ ธ๋ค.
โข
๋ฆฌํ๋ ์ฌ๋ฅผ ํ๊ณ๋ก ๋์จํ๊ฒ ๊ณํ์ ์งฐ๋๋ฐ ๋ค๋ฅธ ํ๋ก์ ํธ๋ฅผ ํด๋ณผ ๊ธฐํ๊ฐ ์๊ฒจ์ ์กฐ๊ธ ํํ๋๋ค.
ย Learned (๋ฐฐ์ด ์ )
kotlin ๋ฌธ๋ฒ
โข
Companion๊ณผ Static
โฆ
Java์์๋ Static์ ์ฌ์ฉํ๊ณ , Kotlin์์๋ Companion์ ์ฌ์ฉํ๋ค. ์ด๋ฆ์ ๋ค๋ฅด์ง๋ง ์ด๋ฅผ ์ฌ์ฉํ ์์๋ค์ ๊ฐ์ฒด ์์ฑ์์ด ์ฌ์ฉํ ์ ์๋ค๋ ๊ณตํต์ ์ด ์๋ค.
โข
copy()๋ฅผ ์ด์ฉํ ๊น์ ๋ณต์ฌ์ ์์ ๋ณต์ฌ
โฆ
data class์ copy()๋ฅผ ์ด์ฉํ๋ฉด ๊น์ ๋ณต์ฌ๋ฅผ ํ ์ ์๋ค.
โฆ
๊น์ ๋ณต์ฌ๋ฅผ ํ๋ฉด ๊ฐ์ฒด์ ์ ์ฒด ๊ฐ์ ๋ณต์ฌํ์ฌ ์ฌ์ฉํ๋ฏ๋ก ๋ฉค๋ฒ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝํ์ ๋ ์๋ณธ์ด ์ ์ง๋๋ค.
โฆ
์์ ๋ณต์ฌ๋ = ์ฐ์ฐ์๋ฅผ ์ด์ฉํ๋ค.
โฆ
์์ ๋ณต์ฌ๋ฅผ ํ๋ฉด ๊ฐ์ฒด์ ์ฃผ์ ๊ฐ์ ๋ณต์ฌํ๋ฏ๋ก ๋ฉค๋ฒ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝํ์ ๋ ์๋ณธ์ด ์ ์ง๋์ง ์๋๋ค.
โข
as ์ is ๋ฅผ ์ด์ฉํ ์บ์คํ
โฆ
as : ๊ฐ์ฒด๋ฅผ ์ง์ ๋ ํด๋์ค ํ์
์ผ๋ก ๋ณํํ๋ ์ฐ์ฐ์
โฆ
is : ํ ๋ณํ์ด ๊ฐ๋ฅํ๋ฉด ๋ณํ์ ํ๊ณ true๋ฅผ ๋ฐํ
ย Longed for (์์ผ๋ก ๋ฐ๋ผ๋ ์ )
API๋ฅผ ์ด์ฉํ์ฌ json ํต์ ์ฑ ๊ฐ๋ฐ
โข
rest API๋ฅผ ํ์ฉํ์ฌ ์ฑ์ ๊ฐ๋ฐํ ๊ฒฝํ์ ๊ฐ์ง ๊ฐ๋ฐ์๋ฅผ ์ฐพ๋ ๊ฒฝ์ฐ๊ฐ ์ข
์ข
์๋ค.
โข
์ด๋ฌํ ์ด์ ๋ก API๋ฅผ ํ์ฉํ์ฌ json ํต์ ์ ํ๋ ์ฑ์ ๊ฐ๋ฐํ๋ ํ๋ก์ ํธ๋ฅผ ์งํํ ๊ณํ์ด๋ค. ๋ฐฑ์๋์์ ์ฃผ๋ json ์ ๋ณด๋ฅผ ํ ๋๋ก ์ฑ์ ๊ฐ๋ฐํ ๊ฒ์ด๋ค. ๋์์ธ๋ถํฐ ์์ํด์ผ๋๋๋ฐ ์ผ๋จ ํผ๊ทธ๋ง๋ฅผ ์ฌ์ฉํ์ฌ ๋์์ธํ๋ ๋ฐฉ๋ฒ์ ์์๋ด์ผ ํ ๊ฒ ๊ฐ๋ค.
โข
ํ์ฌ ์งํํ๊ณ ์๋ ๊ฐ์ธ ํ๋ก์ ํธ๋ฅผ ๋ค์์ฃผ ์์ ๋๋ด๊ณ API ์์ฉ ํ๋ก์ ํธ๋ฅผ ๋ฉ์ฌ ํ๋ก์ ํธ ์์ ์ ๊น์ง ๋ง๋ฌด๋ฆฌํ์ฌ ๋ฐฐํฌํ ๊ณํ์ด๋ค.
๋์์ธ ํจํด ๊ณต๋ถ
โข
MVVM ์ ๊น ์ดํด๋ดค๋๋ฐ ๋ด๊ฐ ์ฐธ๊ณ ํ๋ ์ฝ๋๋ ๋น์ทํ๊ฑฐ ๊ฐ๊ธฐ๋ ํ๊ณ ์ ๋งคํ๋ค.
โข
Model - View - ViewModel ์์์ธ๋ฐ ๋๋ recyclerView๋ฅผ ์ฌ์ฉํ๋ค๋ณด๋ View - Adapter - Repository - ListViewModel ์์๋ก ํ๋ฌ๊ฐ๋ค. ์ด๊ฒ MVVM์ด ๋ง๋์ง ํ๋จ์ด ์ ์์ง ์๋๋ค.
โข
๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด์ผ๋ ๊ฒ ๊ฐ๋ค.