์ง๋ ํฌ์คํ ์์ ๊ฐ๋ตํ๊ฒ ์ฝํ๋ฆฐ์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ด ์ด๋ป๊ฒ ์๊ฒผ๋์ง์ ๋ํด์ ์์๋ณด์๋๋ฐ, ์๋ฐ๋ฅผ ๋ง์ด ๋ฎ์ ์ธ์ด๋ผ๊ณ ๋๊ผ์ผ๋ฉฐ ๋งค์ฐ ์ค๋๋ง์ ์๋ก์ด ์ธ์ด๋ฅผ ๊ณต๋ถํ๋ ํฐ๋ผ ์๋กญ๊ณ ์ ๊ธฐํ๊ณ ํฅ๋ฏธ๋ก์์ ๋ง์ด ๋๊ผ๋ค. ๊ทธ๋์ ํ์ฌ ๋์๊ด์์ ์ฝํ๋ฆฐ in action ์ฑ ์ ๋น๋ ค์ ์ฝ์ด๋ณผ ์์ ์ด๋ฉฐ, ์ฑ ์์ ๋ฐฐ์ด ๋ด์ฉ๋ ํฌ์คํ ์ ํ๋ ค๊ณ ํ๋ค.
์ฐ์ ๊น์ด์๊ฒ ๋ฌธ๋ฒ๊ณต๋ถ๋ฅผ ์์ํ๊ธฐ ์ ์ ์ฝํ๋ฆฐ์ด ์ด๋ค ์ธ์ด์ธ์ง์ ๋ํ ๋ด์ฉ๋ถํฐ ์ข ๋ ์์ธํ ์์์ผ ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์ด ์ฑ ์์ ๊ด๋ จ ๋ถ๋ถ์ ์ฝ์ด๋ณด์๊ณ ๊ทธ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณธ๋ค.
์ฝํ๋ฆฐ์ ์ฃผ์ ํน์ฑ
1. ๋์ํ๋ซํผ: ์๋ฒ, ์๋๋ก์ด๋ ๋ฑ JVM์ด ์ค์น๋ ์ ์๋ ๋ชจ๋ ํ๋ซํผ
- ์ด ๋ถ๋ถ์ ์๋ฐ๋ฅผ ๋์ฒดํ ์๋ก์ด ์ธ์ด์์ ํ์คํ ๋ณด์ฌ์ฃผ๊ณ ์์ต๋๋ค.
2. ์ ์ ํ์ ์ธ์ด
- ์ปดํ์ผ ์์ ์ค๋ฅ๋ฅผ ๊ฐ์งํ์ฌ ๋ฐฐํฌ ํ ๋ฐํ์์ ๋ฐ์ํ ์ค๋ฅ๋ฅผ ๋ฏธ๋ฆฌ ์๋ฐฉํ ์ ์์ต๋๋ค.
3. ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ง์
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ํต์ฌ๊ฐ๋ ์ 3๊ฐ์ง๊ฐ ์์ฃ . ์ผ๊ธ์๋ฏผ(first-class), ๋ถ๋ณ์ฑ(immutability), ๊ทธ๋ฆฌ๊ณ ๋ถ์ํจ๊ณผ(side-effect)๊ฐ ์๋ค๋ ๊ฒ. ์ฝ๋๋ฅผ ๋ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์๊ฒ ํด์ฃผ๊ณ , ๋ค์ค ์ค๋ ๋๋ฅผ ์ฌ์ฉํด๋ ์์ ํ๋ฉฐ, ํ ์คํธ๊ฐ ์ฝ๋ค๊ณ ์๊ธฐํฉ๋๋ค. ํนํ ๋ค์ค ์ค๋ ๋ ์ฌ์ฉ์ด ์์ ํ๋ค๋ ๊ฒ์ ํจ์ ๋ด์์ ์ธ๋ถ ๊ฐ์ฒด์ ์ํ๋ณ๊ฒฝ์ ํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์๊ธฐํฉ๋๋ค.
4. ๋ฌด๋ฃ ์คํ์์ค
- ๊ฐ์ฅ ์ค์ํ ํน์ง ์ค ํ๋๋ผ๊ณ ํ ์ ์์ฃ . ๊ทธ๋์ ํ๊ตญ์ ์น์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ํฐ ๊ธฐ์ฌ๋ฅผ ํ Java๋ ์ค๋ผํด์ ์์ ๋์ด๊ฐ ๋ค๋ก ์ ๋ฃํ๊ฐ ์งํ๋๊ณ ์๊ธฐ ๋๋ฌธ์ ํ๊ตญ ๊ธฐ์ ๋ค์์๋ ์๋ฐ๋ฅผ ๋์ฒดํ ์ธ์ด๋ฅผ ์ฐพ์ผ๋ ค๊ณ ํ ๊ฒ๋๋ค.
5. ๊ธฐ์กด Java ์์ค์ฝ๋์์ ์ฐ๋
- ์ด๊ฑด ๋ด๊ฐ ์๊ฐํ๋ ์ฝํ๋ฆฐ์ ์ ๋ง ์ค์ํ ํน์ฑ์ด๋ค. ๊ธฐ์กด ์๋ฐ์์ค ์ฝ๋๋ฅผ ์ฝํ๋ฆฐ ํ๋ก์ ํธ๋ก ๋ถ๋ฌ์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค๋ ์ ์ ์ ๋ง ํ๋ฅญํ ํน์ฑ์ด๋ค.
์ฝํ๋ฆฐ์ ์ฒ ํ
1. ์ค์ฉ์ฑ : ์ด๊ฑด ๋ญ ๋งํ ํ์๊ฐ ์์๊น, ๋จ์ง ์ฐ๊ตฌ๋ฅผ ์ํ ๋ชฉ์ ์ผ๋ก ๊ฐ๋ฐ๋ ์ธ์ด๊ฐ ์๋๋ผ๋ ์
2. ๊ฐ๊ฒฐ์ฑ : ๋์ด์ ๊ฐ๋ฐ์๊ฐ getter, setter, toString ๋ฑ์ ์ฝ๋๋ฅผ ์์ฑํ ํ์์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ค.
3. ์์ ์ฑ : ์ ์ ํ์ ์ธ์ด์ด๋ ์ปดํ์ผ ์์ ์ ์ค๋ฅ๋ฅผ ์ฐพ์๋ธ ๋ค๋ ์ , ๊ทธ๋ฆฌ๊ณ ์๋ฐ์์ ํํ ๋ณผ ์ ์๋ ClassCastException, NPE ๋ฑ์ ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ๊ฐ์งํ ์ ์๋๋ก ์ค๊ณ๋์๋ค๋ ์ ๋ฑ์ด ์๋ค.
4. ์ํธ ์ด์ฉ์ฑ : ์๋ฐ ์ฝ๋๋ฅผ ๊ทธ๋๋ก ๊ฐ์ ธ๋ค ์ธ ์ ์๊ณ ์๋ฐ ์ฝ๋์์ ์ฝํ๋ฆฐ ์ฝ๋๋ฅผ ๊ฐ์ ธ๋ค ์ธ ์ ์๋ค. ์ฌ์ง์ด ์ฝํ๋ฆฐ ์ฝ๋์์ ์๋ฐ๋ก ์ ์ํ ํด๋์ค๋ฅผ ์์/๊ตฌํ๋ ๊ฐ๋ฅํ๋ค. ๋ํ, ์๋ฐ-์ฝํ๋ฆฐ ๋ณํ๊ธฐ๋ฅผ ์ด์ฉํ์ฌ ๊ธฐ์กด ์๋ฐ์ฝ๋๋ฅผ ์ฝํ๋ฆฐ ์ธ์ด๋ก ๋ณ๊ฒฝํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค. ์ด๋ ์ธํ ๋ฆฌJ๋ฟ๋ง ์๋๋ผ ์ดํด๋ฆฝ์ค๋ ์น์์๋ ๊ฐ๋ฅํ๋ค๊ณ ํ๋ค.
๋ค์์ ์ฝํ๋ฆฐ ๋ฌธ๋ฒ์ ํ ์คํธ ํด๋ณผ ์ ์๋ ๋์ดํฐ์ด๋ค. ๊ฐ์ข ์ฝํ๋ฆฐ ์ฝ๋ ์ํ ์์ ๋ ํ์ธํ ์ ์์ผ๋ ์ฝํ๋ฆฐ์ ๋ํด ๋ ๊ณต๋ถํด๋ณด๊ณ ์ ํ๋ค๋ฉด ์์ฃผ ๋ค๋ฌ ๋๋ค๊ฐ์.
์ฝํ๋ฆฐ ์จ๋ผ์ธ ๋์ดํฐ : https://play.kotlinlang.org/
'๐ป Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
AWS ES์ logback์ผ๋ก ๋ก๊น ํ๊ธฐ (์ปค์คํ ์ดํ๋) (0) | 2020.06.21 |
---|---|
[Kotlin/JVM] ์ฝํ๋ฆฐ์์ ์์ฃผ ์ฌ์ฉํ๋ ๋ฌธ๋ฒ (0) | 2020.05.29 |
[AWS/Java] Elasticsearch ์ธ๋ฑ์ค S3๋ก ๋ฐฑ์ /๋ณต์ ํ๊ธฐ (0) | 2020.05.25 |
[Kotlin/JVM] ์ฝํ๋ฆฐ ๊ธฐ๋ณธ๋ฌธ๋ฒ (Basic Syntax) (0) | 2020.05.15 |
(TODO) Spring Boot 1.2 RestTemplate ConnectTimeout ์ค์ ์ด์ (0) | 2020.02.11 |