๋จ๋ค๋ณด๋ค ๊น์ ์ฝํ๋ฆฐ ์ง์์ ์ํ๋ค๋ฉด?
<์ฝํ๋ฆฐ ๊ณ ๊ธํธ> ๊ฐ์์ ํจ๊ปํด์! โญ
๋๊ธฐ์
์ ์ง๊ธ ์ฝํ๋ฆฐ ๋์
์ค!
๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ทจ์
์์ฅ์ ๊ฐ์๋ก ๋ ์ค๋ฅธ ์ฝํ๋ฆฐ(Kotlin).
ํ์ฌ ๋ค์ํ ๊ธฐ์
๊ณต๊ณ ์ ์ฐ๋์ฌํญ๊ณผ ์๊ฒฉ์์ ์ฝํ๋ฆฐ์ ์ด๋ ต์ง ์๊ฒ ์ฐพ์ ์ ์์ด์.
๋ฐฑ์๋ ๊ฐ๋ฐ์๋ก์์ ๊ฒฝ์๋ ฅ, ์ฝํ๋ฆฐ์ผ๋ก ์์ฑํด ๋ณด์ธ์!
์ฝํ๋ฆฐ์ ๊น์ด๊ฐ ๋ํ๊ธฐ ๐ฎ
๋ณธ ๊ฐ์์์๋ ์ฝํ๋ฆฐ์ ๋ค์ํ ์ธ์ด์ ํน์ง๋ค์ ๊น์ด ์๊ฒ ๋ค๋ฃจ๊ณ ์์ผ๋ฉฐ, ๋ค์ํ ์์์ ์ค์ต์ ํตํด ์ฝ๊ฒ ์ดํดํ์ค ์ ์๋๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ์ฌ์ฉํ๊ณ ์๋ ์ฝํ๋ฆฐ์ ๊น์ด๊ฐ์ ๋ํด, ์ฝํ๋ฆฐ ์ธ์ด์ ๋งค๋ ฅ์ ๋์ฑ๋ ๋น ์ ธ๋ณด์ธ์!
๐ ์ฝํ๋ฆฐ ์ธ์ด๋ฅผ ์ดํดํ๊ณ ํ์ฉํ๋ ๋ฐ ํ์ํ ๋ด์ฉ์ ํ ๊ฐ์๋ก!
๐ JMH, yml DSL, DI ์ปจํ
์ด๋ ๋ฑ ํ๋ถํ ์์ ๋ฐ ์ค์ต๊ณผ ํจ๊ป!
๐ ๊ฐ์ ๋ด์ฉ์ ์๋ฒฝํ ์ ๋ฆฌํ
135 ํ์ด์ง ํธ๋๋ถ + 707 ํ์ด์ง PPT!
๋ณต์กํ๊ณ ๋ฒ๊ฑฐ๋ก์ด ํ๊ธฐ ๋์ ์์
์ ์ง์คํ์ธ์!
์ถฉ๋ถํ ๋ด์ฉ์ ์ดํดํ๊ณ ๋ณต์ตํ ์ ์๋๋ก ์๊ฐ์์๊ฒ ๊ฐ์ ๋ด์ฉ์ ๊ผผ๊ผผํ ์ ๋ฆฌํ ํ์ต ์๋ฃ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ปค๋ฆฌํ๋ผ์
ํ์ธํด ๋ณด์ธ์ ๐
์ ๋ค๋ฆญ
- ์ฝํ๋ฆฐ์์ ์ ๋ค๋ฆญ ํด๋์ค๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ
- ์ฌ์ด ์์๋ก ์ดํด๋ณด๋ ์ ๋ค๋ฆญ ๋ฌด๊ณต๋ณ, ๊ณต๋ณ, ๋ฐ๊ณต๋ณ
- ์ฝํ๋ฆฐ์์ ๋ณ์ฑ์ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ
- ์ฝํ๋ฆฐ์์ ์๊ฑฐ๋๋ ์ ๋ค๋ฆญ ํ์
์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
- ์ ๋ค๋ฆญ ํจ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
์ง์ฐ๊ณผ ์์
- lateinit, by lazy ๋ฑ ์ฝํ๋ฆฐ์์ ์ ๊ณตํ๋ ๊ธฐ๋ณธ์ ์ธ ์ง์ฐ๊ณผ ์์ ๊ธฐ๋ฅ
- ์์ ํ๋กํผํฐ์ ์์ ๊ฐ์ฒด์ ๋ด๋ถ ์๋ฆฌ
- ๋๋ง์ ์์ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ
- ์์ ํ๋กํผํฐ์ ์์ ๊ฐ์ฒด ์ฐ๊ฒฐ ๋ฐฉ๋ฒ
- Iterable์ ๋์ฒดํ ์ ์๋ Sequence
- ๋ง์ดํฌ๋ก ๋ฒค์น๋งํน ํด JMH๋ฅผ ์ด์ฉํ ์ฑ๋ฅ ๋น๊ต
๋ณต์กํ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- ์ฝํ๋ฆฐ์์ ๊ณ ์ฐจํจ์๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ
- ๊ณ ์ฐจํจ์์ ์ปดํ์ผ ๊ณผ์ ์ดํด
- inline ํจ์์ non-local return์ ์ดํด
- noinline, crossinline ํค์๋
- Single Abstract Method ์ธํฐํ์ด์ค๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ๊ณผ Reference๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ๊ณผ Kotlin DSL
- ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ ๋ฐฉ๋ฒ ๋ฐ ์์ฉ ์ฌ๋ก
- ์ฝํ๋ฆฐ์ ๋ค์ํ ์ธ์ด์ ํน์ง์ ํ์ฉํ Kotlin DSL ์๋ฆฌ ํ์ต
- YAML์ ๋ง๋๋ Kotlin DSL ์ ์ ์ค์ต
- ๊ตญ๋ด ๊ธฐ์
๋ฐ ์ฝํ๋ฆฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ดํด๋ณด๋ Kotlin DSL ํ์ฉ ์ฌ๋ก
์ด๋
ธํ
์ด์
๊ณผ ๋ฆฌํ๋ ์
- ์ฝํ๋ฆฐ์์ ์ด๋
ธํ
์ด์
์ฌ์ฉ ๋ฐฉ๋ฒ๊ณผ ์ฃผ์ํ ์
- ์ฝํ๋ฆฐ์ ์ฃผ์ ๋ฆฌํ๋ ์
๊ฐ์ฒด ์ดํด ๋ฐ ํ์ฉ
- ์ด๋
ธํ
์ด์
๊ณผ ๋ฆฌํ๋ ์
์ ํ์ฉํ DI ์ปจํ
์ด๋, ์ํผ ํ์
ํ ํฐ ์ ์ ์ค์ต
์ฝํ๋ฆฐ ๋ ์์๋ณด๊ธฐ
- ์ฝํ๋ฆฐ์ ์ ์ฉํ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํจ์
- inline class, ๊ผฌ๋ฆฌ ์ฌ๊ท ํจ์ ๊ธฐ๋ฅ
- ์ฝํ๋ฆฐ์์ ์ฃผ์์ ํตํด ๋ฌธ์๋ฅผ ๋ง๋๋ kdoc ํ์ฉ
- ์ฝํ๋ฆฐ์ ์ฝ๋ ์คํ์ผ์ ์ค์ ํ๋ ktlint ํ์ฉ
ํจ๊ปํ๋ฉด ์ข์ ๊ฐ์ ๐ก
- ๋ณธ ๊ฐ์๋ ์ฝํ๋ฆฐ ๊ธฐ์ด ๋ฌธ๋ฒ์ ์๊ณ ์๋ ๋ถ๋ค์ ๋์์ผ๋ก ํฉ๋๋ค. ์ฝํ๋ฆฐ ๊ธฐ์ด ๋ฌธ๋ฒ์ ์๋ ๊ฐ์๋ฅผ ํตํด ํ์ตํด ๋ณด์ธ์.
- ์ฝํ๋ฆฐ ํ์ต์ ํ์! ์ฝ๋ฃจํด ๊ฐ์์ ํจ๊ป ์๊ฐํ๋ฉด ๋ ์ข์์.
์ด๋ฐ ๋ถ๋ค์
์ง๊ธ ๋ฐ๋ก ์์ํ์ธ์ ๐ค
์ฝํ๋ฆฐ ์ฝ๋๋ฅผ ๊ฑฐ์นจ์์ด ์ฝ๊ณ ์ถ์ ๊ฐ๋ฐ์
์ฝํ๋ฆฐ์ผ๋ก ๋๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ์ถ์ ๊ฐ๋ฐ์
์ฝํ๋ฆฐ์ ์ ๋๋ก ํ์ฉํ๊ณ ์ถ์ ๊ฐ๋ฐ์
์์ ์ง๋ฌธ Q&A ๐ฌ
Q. ๊ฐ์ ์ค์ต ํ๊ฒฝ์ ์ด๋ป๊ฒ ๋๋์?
A. ๊ฐ์์์๋ IntelliJ๋ฅผ ํ์ฉํด ์ค์ต์ ์งํํ๊ณ ์์ต๋๋ค. ๊ผญ IntelliJ๋ฅผ ์ฌ์ฉํ์ง ์์ผ์๋๋ผ๋ ์ฝํ๋ฆฐ์ ๊ตฌ๋ํ ์ ์๋ ํ๊ฒฝ์ด๋ผ๋ฉด ์ค์ตํ์๋๋ฐ ํฐ ๋ฌธ์ ๊ฐ ์์ผ์ค ๊ฒ๋๋ค! ๐
Q. ๋น๋ ํด์ ๋ฌด์์ ์ฌ์ฉํ๋์?
A. ๊ฐ์์์๋ gradle์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. kdoc ํน์ ktlint๋ฅผ ์ค์นํ ๋ gradle ํ๋ฌ๊ทธ์ธ์ ํ์ฉํ๊ณ ์์ด, maven์ ์ฌ์ฉํ์ ๋ค๋ฉด maven์ฉ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ์
์ผ ํฉ๋๋ค.
Q. ์๋๋ก์ด๋ (ํน์ ๋ฐฑ์๋) ๊ฐ๋ฐ์์
๋๋ค. ๊ฐ์๋ฅผ ๋ค์ ์ ์์๊น์?
A. ๋ค๋ค! ๋ฌผ๋ก ์
๋๋ค~ ๋ณธ ๊ฐ์๋ ์ฝํ๋ฆฐ ์ธ์ด ์์ฒด์ ๋ํ ๊ฐ์์ด๊ธฐ ๋๋ฌธ์ ์ฝํ๋ฆฐ ๊ธฐ์ด ๋ฌธ๋ฒ์ ์๊ณ ๊ณ์๋ฉด ์ด๋ ค์ ์์ด ๊ฐ์๋ฅผ ๋ค์ผ์ค ์ ์์ต๋๋ค. ๊ฐํน ํน์ ์์ญ์ ์์๊ฐ ๋์ค๋๋ผ๋ ์ฝํ๋ฆฐ์ ์ธ์ด์ ํน์ง์ ์ค๋ช
ํ๋ ์์๋ก๋ง ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.
Q. ์ฝ๋ฃจํด๋ ๊ฐ์ ๋ด์ฉ์์ ๋ค๋ฃจ๊ณ ์๋์?
A. ์๋์, ์ฝ๋ฃจํด์ ๊ฒฝ์ฐ ์ฝํ๋ฆฐ ์ธ์ด๋ก ์ ๊ณต๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ธฐ๋ฅ์ด๊ธฐ ๋๋ฌธ์ ์ฝํ๋ฆฐ ์ธ์ด๋ง์ ๋ค๋ฃจ๋ ๊ฐ์์๋ ๋ถ๋ฆฌํ์ต๋๋ค. ์๋์์ ์ฝ๋ฃจํด ๊ฐ์๋ฅผ ๋ง๋๋ณด์ค ์ ์์ต๋๋ค. ๐
์๊ฐํ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๐
*์๋ ์๊ฐํ์ ์ง์๊ณต์ ์์ ์ฝํ๋ฆฐ ๊ฐ์์ ๋ํ ์๊ฐํ์
๋๋ค.
โ
โ
โ
โ
โ
๊ฐ์ ๋ด์ฉ ์์ฒญ ์์ฐจ๋ค์. ๊ฐ์ฌ๋๊ป์ ๊ฐ์ง ์คํ์ผ์ด๋ ์คํฌ๋ค์ ๊ฐ์ ์ค๊ฐ์ค๊ฐ์ ํ์ผ๋ก ํ์ด์ฃผ์
์ ํ๋๋์ฉ ์ป์ด๊ฐ๋ค์. ์ค๋ช
์ด ๋ค์ํด์ ๋ฏธ๋ฆฌ ๊ถ๊ธํ ๋ฒํ ์ ๋ค์ ์ ์์ํ๊ฒ ๊ธ์ด์ฃผ์์ต๋๋ค. ์? -> ์ค๋ช
, ๊ทธ๋ฆฌ๊ณ ์ฅ๋จ์ ๋ค๊ณผ ๋ค์ํ ์์๋ค.. ์ต๊ณ ์์ต๋๋ค. ๊ฐ๊ฒฉ๋ณด๋ค ๋ ๋ง์ ๊ฒ๋ค์ ์ป์ด๊ฐ๋ ๋ถ๋ถ์ด์๊ณ , PPT๋ ์์ฒญ ์ ์ฑ ์์ผ์ ๊ฒ ๋ณด์
๋๋ค! ๊ฐ์ฌํฉ๋๋ค.
-Wo***
โ
โ
โ
โ
โ
์ง๋์น ์ ๋๋ก(?) ๊ฒธ์ํ ๊ฐ์ฌ์ ๋ด๊ณต์ด ๋๊ปด์ง๋ ๊ฐ์ ๋ด์ฉ์ด ์ธ์์ ์
๋๋ค. ํ ๊ฐ์์์ ๊ฐ๋ฐ ์ ๋ฐ์ ํ์ํ ์ง์์ ํ ๋ฒ์ ํ์ตํ ์ ์์ด์ ์ข์๊ณ ๊ฐ์ํ๋ ์
์ฅ์์๋ ํ๋์๊ฒ ์ง๋ง, ์ค๋ฌด์ ๊ฐ๊น์ฐ๋ฉด์๋ ๊ผญ ํ์ํ ๊ฐ์์ ์๊ตฌ์ฌํญ์ ๊ฐ์ด ๊ฐ๋ฐํด๋ณด๋ ์ปจ์
์ผ๋ก ์๋ฆฌ์ฆ๋ฌผ์ด ๋์์ผ๋ฉด ํ๋ ์์ฌ์ ๋ถ๋ ค๋ดค์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
- ์ ***
โ
โ
โ
โ
โ
๊ฐ์ ๋ด์ฉ๋ถํฐ ์๋๊น์ง ์ ์ฒด์ ์ผ๋ก ์์ ์ ํํ
์ฐฐ๋ก์ธ ๊ฐ์์์ต๋๋ค! ๊ฐ์ฌํฉ๋๋ค :)
-Je***
โ
โ
โ
โ
โ
์์ ์ ์ ์ ๋ฆฌ๋ ๊ฐ์ ๋๋ฌธ์ ์ง์ ์ ๋ฆฌํ ์๊ฐ์ ๋ง์ด ์ค์ฌ์ฃผ๋ ์ข์ ๊ฐ์๋ผ๊ณ ์๊ฐํฉ๋๋ค.
-go***
โ
โ
โ
โ
โ
๊ฐ์ฌ๋์ ์๊ฒ ๋์ด ์ฝํ๋ฆฐ์ ์ฌ๋ฏธ๋ฅผ ์๊ฒ ๋์์ต๋๋ค! ๋น๋ก ์๊ฐํ์ด์ง๋ง ๋๋ฌด ๊ฐ์ฌ๋๋ฆฌ๊ณ ์ธ์ ๊ฐ์ฌ๋์ ๋ง๋๊ฒ ๋ ๊ฒ ๊ฐ์ ์๊ฐ์ด์์ด์! ๋ค์ ๊ฐ์๊ณํ์ด ์ด๋ป๊ฒ ๋์๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋์ค๋ฉด ๋ฌด์กฐ๊ฑด ํ๊ตฌ ์์ ์
๋๋ท!!
-์***
โ
โ
โ
โ
โ
๊ฐ์๋ ๋ค๋ฅธ ๋ฆฌ๋ทฐ๋ค์ด ๋งํ ๊ฑฐ์ฒ๋ผ ์ดํดํ๊ธฐ ์ข์์. ๊ทผ๋ฐ ์ ์ผ ์ข์ ๊ฑด ์ง๋ฌธํ๋ฉด ์ ๋ง ์ฑ์ฌ์ฑ์๊ป ์์ธํ ์๋ ค์ฃผ์๋ ์ ์ด ์ ๋ง ์ข์ต๋๋ค ์๋ฅผ ๋ค๋ฉด ์ด๋ฐ ๊ฐ๋จํ ์ง๋ฌธ์๋.. ๊ฐ๋!
- ์***