DevLog ๐ถ
[์ฐํ ์ฝ 5๊ธฐ] ๋ ๋ฒจ 1 ๋ ๋ฒจ ์ธํฐ๋ทฐ ์ ๋ฆฌ ๋ฐ ๊ฐ์ ํ๊ณ ๋ณธ๋ฌธ
[์ฐํ ์ฝ 5๊ธฐ] ๋ ๋ฒจ 1 ๋ ๋ฒจ ์ธํฐ๋ทฐ ์ ๋ฆฌ ๋ฐ ๊ฐ์ ํ๊ณ
dolmeng2 2023. 4. 6. 18:02โ๏ธ ๋ ๋ฒจ ์ธํฐ๋ทฐ๋?
๋๋์ด ๋ ๋ฒจ 1 ๋ฐฉํ ๊ธฐ๊ฐ ๋์ ๋ฐ๋ ธ๋ ๋ธ๋ก๊ทธ ํฌ์คํ
์ ๋ง์ง๋ง, ๋ ๋ฒจ๋ก๊ทธ๋ฅผ ์ ๋ฆฌํ๊ณ ์ ํ๋ค.
์ฐํ
์ฝ์์๋ ๋งค ๋ ๋ฒจ์ด ๋๋๋ฉด ์กฐ๋ณ๋ก '๋ ๋ฒจ ์ธํฐ๋ทฐ'๋ผ๋ ๊ฒ์ ์งํํ๋ค.
๋ ๋ฒจ ์ธํฐ๋ทฐ๋ ๊ฐ ๋ ๋ฒจ์์ ํ์ตํ ๋ด์ฉ์ ์ธํฐ๋ทฐ ํ์์ผ๋ก ์งํํ๋ ๋งํ๊ธฐ ํ๋์ผ๋ก์, ์์ ์ด ์๊ณ ์๋ ์ง์์ ๋ง๋ก ํํํ๋ ์ฐ์ต์ ํตํด ๋ฉํ์ธ์ง๋ฅผ ๊ธฐ๋ฅผ ์ ์๋ค. (์ถํ ๊ธฐ์
์ ๊ธฐ์ ๋ฉด์ , ์ธํฐ๋ทฐ์ ๋ํ ๋๋น๋ผ๊ณ ๋ด๋ ์ข๋ค ๐)
๊ทธ๋ฃน๋น 6-7๋ช
์ด ์งํํ๋ฉฐ, 1๋ช
์ ์ธํฐ๋ทฐ์ด, 3๋ช
์ ์ธํฐ๋ทฐ์ด, 2-3๋ช
์ ์ต์ ๋ฒ์ ํจ๊ป ์งํํ๋ค.
ํ ์ฌ๋๋น ์ด ์ธํฐ๋ทฐ 20๋ถ, ๊ทธ๋ฆฌ๊ณ ํผ๋๋ฐฑ 10๋ถ์ฉ ์งํํ๋๋ฐ ์๊ฐ๋ณด๋ค ์ด ์๊ฐ์ด ๋๊ฒ ๋น ๋ฅด๋ค.
๋ ๋ฒจ ์ธํฐ๋ทฐ๋ ์ด 2์ผ๊ฐ ์งํ๋์์ผ๋ฉฐ, ๋๋ ๋ ๋ฒ์งธ ๋ ์ ์งํํ๊ธฐ ๋๋ฌธ์ ์ฒซ ๋ ์ ์ฌํ์ ํ๋ค.
์ฝ์น๋ ๋ธ๋ผ์ด์ด์์ผ๋ฉฐ, ๊ฐ์ด ์งํํ ํฌ๋ฃจ๋ ๋ผ์จ, ์๋ฒจ, ์ด๋ , ๋๋, ํด๋ก, ํ๋ธ์๋ค.
์ด๊ฑฐ๋ ์ ์ถํ๋ ๋ ๋ฒจ๋ก๊ทธ ๋งํฌ์ด๋ค. ๋ ๋ฒจ 1์ ๋ฏธ์
์์ ์งํํ๋ ํ์ต + ๊ฐ์ธ์ ์ผ๋ก ๊ณต๋ถํ๋ ๋ด์ฉ๋ค์ ๋ํด ์์ฑํ์๋ค.
โ๏ธ ๋ ๋ฒจ๋ก๊ทธ ์ค๋นํ๊ธฐ
์๋๋ ๋ ๋ฒจ ๋ก๊ทธ์ ๋ํด ์ ๋ฆฌํ ๋ด์ฉ์ด๋ค. ์๋ง๋์ค์ ๋ฐ๋ก ๋๋ถ์ ์กฐ๊ธ ๋ ์์ํ๊ฒ ์ ๋ฆฌํ ์ ์์๋ค ๐โโ๏ธ
๋ฐ์ค ์์ ์จ์๋ ๋ถ๋ถ์ ์๋ก ์ง๋ฌธ์ ์ฃผ๊ณ ๋ฐ์์ ๋ ๋ด๊ฐ ์ ๋ฆฌํ ๋ต๋ณ์ด๋ค.
์ด๊ฒ์ ๊ฒ ์ฐพ์๋ณด๋ฉด์ ์ ๋ฆฌํ ๋ด์ฉ + ๋ด ๊ฐ์ธ์ ์๊ฐ์ด๋ผ ๋ค์ ๋ถ์ ํํ ์๋ ์์ง๋ง ๊ธฐ๋ก์ฉ์ผ๋ก ๋จ๊ฒจ๋๊ณ ์ ํ๋ค.
๐ฌ SOLID (๊ฐ์ฒด์งํฅ 5๋ ์์น)
- SRP (๋จ์ผ ์ฑ
์ ์์น)
๊ฐ์ฒด๋ ๋จ ํ๋์ ์ฑ
์๋ง ๊ฐ์ ธ์ผ ํ๋ค.
๋ณํ๊ฐ ์๊ฒผ์ ๋ ํ๋์ ํด๋์ค๋ง ์์ ํ๋ฉด ๋์ด์ ์ ์ง๋ณด์๊ฐ ์ฌ์์ง๋ค.
- OCP (๊ฐ๋ฐฉ-ํ์ ์์น) โ ์ถ์ํ, ๋คํ์ฑ
ํ์ฅ์๋ ์ด๋ ค ์๊ณ , ๋ณ๊ฒฝ์๋ ๋ซํ ์์ด์ผ ํ๋ค.
๊ธฐ์กด ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋ค.
Q. Crystal Ball Problem์ด ๋ญ๊ฐ์?
OCP๋ ๋ณ๊ฒฝ์๋ ๋ซํ์์ง๋ง, ํ์ฅ์ ์ด๋ ค์์ด์ผ ํ๋ ๊ฑด๋ฐ์!
CBP์ ๊ฒฝ์ฐ ํ์ฅ์๋ ์ด๋ ค์์ ์ ์์ง๋ง, ์ค์ ๋ก OCP๋ฅผ ์์ ํ๊ฒ ๋ง์กฑํ ์ ์๋๊ฐ?์ ๋ํ ๋ฌธ์ ์ ๋๋ค!
์ค์ ๊ตฌํ ์์๋ ํ์ฌ ํ๋ก๊ทธ๋จ์ด ์ด๋ ์ ๋๊น์ง ํ์ฅ๋ ์ ์๋์ง ์ ํ ์์ธกํ ์ ์๊ธฐ ๋๋ฌธ์ด์์ ใ ใ
- LSP (๋ฆฌ์ค์ฝํ ์นํ ์์น) โ ์์
ํ์ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ ํด๋์ค์ ์ธ์คํด์ค ์ญํ ์ ์ ์์ ์ผ๋ก ์ํํ ์ ์์ด์ผ ํ๋ค.
ํ์ ํด๋์ค๋ ์์ ํด๋์ค์์ ์ ์ํ ๋ฉ์๋๋ฅผ ๋ชจ๋ ๊ตฌํํด์ผ ํ๋ค. = ๋คํ์ฑ์ ์ ๊ณตํ๋ค.
์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์๋ค. ์ ์ฐ์ฑ์ด ๋์์ง๋ค.
- ISP (์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น)
ํด๋ผ์ด์ธํธ๊ฐ ์์ ์ด ์ฌ์ฉํ์ง ์๋ ๋ฉ์๋์ ์์กดํ์ง ์์์ผ ํ๋ค.
- DIP (์์กด ๊ด๊ณ ์ญ์ ์์น)
์ถ์ํ์ ์์กดํด์ผ ํ๋ฉฐ, ๊ตฌ์ฒดํ์ ์์กดํ๋ฉด ์๋๋ค. ์ด๋ฅผ ์งํค๋ฉด ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ ์ ์์ด ์ฝ๋์ ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ด ๋์์ง๋ค.
Q. ์์กด ๊ด๊ณ ์ญ์ ์์น์ ์ง์ผฐ์ ๋ ์ฅ์ ์ ๋ฌด์์ธ๊ฐ์?
DIP๋ ์ถ์ ํด๋์ค๋ ์ธํฐํ์ด์ค์ ์์กดํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ๊ตฌ์ฒด ํด๋์ค๋ฅผ ๋ชจ๋ฅด๊ฒ ํ๋ ๊ฒ์ธ๋ฐ์!
DIP๋ฅผ ์งํค๊ฒ ๋๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฒฐํฉ๋๊ฐ ๊ฐ์ํฉ๋๋ค.
๋ง์ฝ ํด๋ผ์ด์ธํธ๊ฐ parent๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ์์์ผ๋ก child1, child2๋ผ๋ ๊ตฌ์ฒดํด๋์ค๊ฐ ์์ ๋ ์๊ตฌ์ฌํญ์ ๋ณ๊ฒฝ์ผ๋ก ์ธํด child2๊ฐ ์ ๊ฑฐ๋์๋ค๊ณ ์๊ฐํด๋ด ์๋น. ์ด๋ child2๋ฅผ ์ธ๋ถ์์ ์์กดํ๊ณ ์์๋ค๋ฉด child2์ ์ ๊ฑฐ๊ฐ ์ธ๋ถ ๋ก์ง์ ํฐ ์ํฅ์ ๋ฏธ์น๊ฒ ๋ ๊ฑฐ์์! ๋ง์ฝ parent๋ฅผ ์์กดํ๊ณ ์์๋ค๋ฉด ์ธ๋ถ์์๋ ์ด๋ฌํ ์ ์ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ณํ์ ์ ์ฐํ๊ฒ ๋์ํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ ๊ฒ ๊ฐ์ต๋๋ค ใ ใ ๊ทธ๋ฐ ์๋ฏธ๋ก OCP์๋ ๋์์ด ๋ ๊ฒ ๊ฐ์์.
Q. SOLID๋ฅผ ์ง์ผ์ ๋ ๊ฐ์ฒด์งํฅ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ฒ ๋์๋ ๊ฒฝํ์ด ์๋์?
SOLID๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์๊ตฌํ๋ ์บก์ํ, ์ถ์ํ, ์์, ๋คํ์ฑ ๋ฑ์ ๋ ์ ํ์ฉํ๊ธฐ ์ํด์ ์งํฌ ์ ์๋ ์์น์ ๋๋ค. ๊ฐ์ธ์ ์ผ๋ก DIP๋ฅผ ์งํค๋ฉด์ ์ ์ง๋ณด์๊ฐ ์ฉ์ดํด์ก๋ ๊ฒฝํ์ด ์์ต๋๋ค. ํ์ ํด๋์ค๋ฅผ ํด๋ผ์ด์ธํธ์ ๋ ธ์ถ์ํค์ง ์๊ณ ์์ ํด๋์ค์์๋ง ๋ ธ์ถ์์ผ, ํ์ ํด๋์ค์ ๋ณํ๊ฐ ์์ ํด๋์ค์ ์ ํ๋์ง ์๋๋ก ํด์ ์ถํ ๋ณํ๊ฐ ์๊ฒผ์ ๋ ํด๋ผ์ด์ธํธ ์ชฝ ์ฝ๋๋ ํฌ๊ฒ ๊ฑด๋ค ํ์๊ฐ ์์์ต๋๋ค.
๐ฌ ๊ฐ์ฒด๋?
๊ฐ์ฒด๋ ํ๋ ฅ์ ์ด์ด์ผ ํ๋ค.
๋ช
๋ น์ ๋ณต์ข
ํ๋ ๊ฒ์ด ์๋, ์์ฒญ์ ์๋ต์ ํด์ผ ํ๋ฉฐ, ์ฌ๊ธฐ์ ์๋ตํ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ ๊ฐ์ฒด๊ฐ ์ค์ค๋ก ํ๋จํด์ผ ํ๋ค.
๋ํ, ๊ฐ์ฒด๋ ์์จ์ ์ด์ด์ผ ํ๋ค. ๊ฐ์ฒด๊ฐ ์ค์ค๋ก ์ด๋ค ์ผ์ ๊ฒฐ์ ํด์ผ ํ๋ค.
์ฌ๋ฌ ๊ฐ์ฒด๋ ๋์ผํ ์ญํ ์ ์ํํ ์ ์๋ค. ์ฌ๊ธฐ์ ๋งํ๋ ์ญํ ์ ๋์ฒด ๊ฐ๋ฅ์ฑ์ ์๋ฏธํ๋ฉฐ, ๊ฐ ๊ฐ์ฒด๋ ์ฑ
์์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์์จ์ ์ผ๋ก ์ ํํ ์ ์๋ค.
๐ฌ ํด๋์ค๋?
๊ฐ์ฒด๊ฐ ํ์ด๋๋ ๊ณณ. ์ธ์คํด์คํ๋ฅผ ํ ์ ์๋ ๊ณณ์ด๋ผ๊ณ ํ ์ ์์ผ๋ฉฐ, ํด๋์ค๋ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๋ ์ด์ ์ฌ์ฉํ์ง ์์ ๋ ๊ฐ์ฒด๋ฅผ ํ๊ดดํ๋ ์ฑ
์์ ๊ฐ์ง๋ค.
๐ฌ MVC ํจํด
Q. MVC ํจํด์์, ์ฌ์ฉ์์ ์ ๋ ฅ์ด ์ฒ๋ฆฌ๋๋ ๊ณผ์ ์ ๊ฐ ์์์ ์ญํ ์ด ๋๋ฌ๋๋๋ก ์ค๋ช ํด์ฃผ์ธ์.
์ฌ์ฉ์์ ์ ๋ ฅ์ด View๋ฅผ ํตํด ์ฒ๋ฆฌ๋๊ณ , ์ค๊ฐ์์ธ controller๊ฐ ์ ๋ ฅ์ ๋ํ ๋ณํ๋ฅผ ๋ฐ์ domain์๊ฒ ๋ถ์ฌํ์ฌ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋ฉ๋๋ค. MVC ํจํด์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๊ฐ๊ฐ์ ๊ณ์ธต์ ๋ํ ์ญํ ์ด ๊ตฌ๋ถ๋์ด์ง๊ธฐ ๋๋ฌธ์ ๊ฒฐํฉ๋๊ฐ ๋ฎ์์ ธ์ ์ ์ง๋ณด์๊ฐ ํธํด์ง ๊ฒ ๊ฐ์ต๋๋ค!
- Model
์ฒ๋ฆฌํด์ผ ํ๋ ๋ฐ์ดํฐ์ ๋ชจ์.
๋ทฐ์ ์ปจํธ๋กค๋ฌ์ ์์กดํด์๋ ์ ๋๋ค.
- View
์ฌ์ฉ์ ์ธํฐํ์ด์ค ์์ ์
, ์ถ๋ ฅ์ ๊ด๋ฆฌํ๋ค.
๋ชจ๋ธ์ ์ ๋ณด๋ฅผ ๋ฐ๋ก ์ ์ฅํ์ง ์๊ณ , ๋จ์ํ ๋ช
๋ น์ ๋ฐ์์ ๋ ์ญํ ๋ง์ ์ํํด์ผ ํ๋ค.
๋ํ, ๋ค๋ฅธ ์์๋ ์ฐธ์กฐํ๊ฑฐ๋ ๋์ํ๋์ง ์์์๋ ์ ๋๋ค.
- Controller
๋ฐ์ดํฐ์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์ฌ์ด๋ฅผ ์๋ ์ญํ .
๋ชจ๋ธ๊ณผ ๋ทฐ์ ๋ณ๊ฒฝ์ ๋ชจ๋ํฐ๋งํ๋ฉด์, ์๋ก ๋ณ๊ฒฝ ํต์ง๋ฅผ ๋ฐ์์ ๋ ๊ฐ๊ฐ์ ๋ํด ํต๋ณดํ๋ ์ฉ๋.
Q. ๋ทฐ์ ๋๋ฉ์ธ์ ์ ์ํธ ์์กด์ ํ๋ฉด ์ ๋ ๊น์?
๋ทฐ๋ ๋น๊ต์ ๋ณ๊ฒฝ์ด ์ฆ์ ๋ถ๋ถ์ ๋๋ค. ๋ง์ฝ ๋ทฐ์ ๋ณํ๊ฐ ๋๋ฉ์ธ์ ์ํฅ์ ์ฃผ๊ฒ ๋๋ค๋ฉด ํต์ฌ ๋ก์ง์ธ ๋๋ฉ์ธ์ด ์๋นํ ์ฆ์ ๋ณํ๋ฅผ ๊ฐ์ง๊ฒ ๋ ๊ฑฐ์์. ์ถ๊ฐ์ ์ผ๋ก ๋๋ฉ์ธ์ด ๋ทฐ๋ฅผ ์๊ณ ์๊ฒ ๋๋ค๋ฉด ์ฌ์ฉ์์๊ฒ ์ ๊ณต๋๋ ๋ถ๋ถ์ ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ๊ณ ์๋ ๋๋ฉ์ธ์ด ์๊ฒ ๋๋ฉด์ ๋๋ฉ์ธ์ด ๊ฐ์ง๊ณ ์๋ ์ญํ ๊ณผ ์ฑ ์์ด ๋๋ฌด ๋ง์์ง ์ ์๋ค๋ ๋จ์ ์ด ์กด์ฌํฉ๋๋ค! ๊ฐ์ ์ด์ ๋ก ๋ทฐ ์ญ์ ๋๋ฉ์ธ์ ์์กดํด์๋ ์ ๋ฉ๋๋ค. ๊ฐ์ ์๋ฏธ๋ก SRP ๊ด์ ์์ ๋ดค์ ๋ ์๋ก๊ฐ ๊ฐ์ง๊ณ ์๋ ์ญํ ๊ณผ ์ฑ ์์ด ๋ถ๋ช ํ๊ธฐ ๋๋ฌธ์ ์์กด์ฑ์ ๋ฎ์ถ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๐ฌ ์์๊ฐ ํฌ์ฅ
Q. ์์๊ฐ ํฌ์ฅ์ ํด์ผ ํ๋ ์ด์ ์ ์ฃผ์ํ ์ ์ด ์๋ค๋ฉด ๋ฌด์์ธ๊ฐ์?
์์๊ฐ ํฌ์ฅ์ ๋ฌด์กฐ๊ฑด ํด์ผ ํ๋ค๊ณ ์๊ฐํ์ง๋ ์์ต๋๋ค. ๋จ์ํ ๊ฐ ๊ฐ์ฒด ์์ฒด๋ฅผ ํฌ์ฅ๋ง ํ๋ค๋ฉด ์คํ๋ ค ๊ฐ์ฒด ์์ฑ ๋น์ฉ์ด ๋ ํด ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ค๋ง, ๊ฐ์ฒด๋ก์ ๊ด๋ฆฌํด์ผ ํ๊ฑฐ๋ ํด๋น ๊ฐ์ด ๋ค๋ฅธ ๊ฐ์ฒด์ ํ๋๋ก์ ๊ด๋ฆฌ๋ ๋ ๊ฒ์ฆ ๋ก์ง์ด๋ ๋ค๋ฅธ ๋ก์ง์ด ๋ค์ด์๋ค๋ฉด ํด๋น ๊ฐ์ฒด์ ์ฑ ์์ ๋๊ธฐ ์ํด์ ์์๊ฐ ํฌ์ฅ์ ์ฌ์ฉํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ๋ํ, ๋ถ๋ณ์ฑ์ ๋ณด์ฅํ๋๋ก ๋ง๋ค ์๋ ์์ ๊ฒ ๊ฐ์์.
๐ฌ ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋
Q. ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด๊ณผ ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋์ ์ฐจ์ด๋ ๋ญ๊ฐ์?
ํฉํฐ๋ฆฌ ๋ฉ์๋ ํจํด์ ๊ฒฝ์ฐ ๋์์ธ ํจํด์ด๊ณ , ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋๋ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ ์ ์ ๋ฉ์๋์ ๋๋ค.
ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ํ์ฅ์ฑ ์๊ฒ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ผ์ข ์ด๊ณ ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ ์๋ฐ์์ ๊ตฌํํ ์ ์๋ ํฉํ ๋ฆฌ ๋ฉ์๋์ ๋ฐฉ๋ฒ ์ค ํ๋์ ๋๋ค!
Q. ๋จ์ํ ์์ฑ์๋ฅผ ์ฌ์ฉํด์ ๋ง๋๋ ๊ฒ๊ณผ ๋ฌด์จ ์ฐจ์ด๊ฐ ์์๊น์? ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์ ์ข์๊น์?
๊ผญ ์ข๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ์์ฑ์๋ ํญ์ new๋ฅผ ํตํด ์๋ก์ด ์ธ์คํด์ค๋ฅผ ๋ฐํํ์ง๋ง, ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋์ ๊ฒฝ์ฐ ์บ์ฑ ๋ฑ์ ํ์ฉํ์ฌ ๋ฌด์กฐ๊ฑด ์๋ก์ด ์ธ์คํด์ค๋ฅผ ๋ฐํํ์ง ์๋๋ก ์ ์ดํ ์ ์์ต๋๋ค.
ํ์ง๋ง, new๋ฅผ ํตํด ๊ฐ์ฒด๋ฅผ ๋ช ์์ ์ผ๋ก ์์ฑํ๋ ์์ฑ์์ ๋ฌ๋ฆฌ ์ ์ ํฉํฐ๋ฆฌ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์ด๋ฐ์ด ์์ ๋กญ๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด์ ์์ฑ์ด ์ด๋์์ ์ผ์ด๋๋์ง ํ์ ๊ด์ ์์ ์ ํ์ธํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
๋ํ, static ๋ฉ์๋ ์ ์ธ์ด๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ์ ๊ด์ ์์๋ ๋ฌธ์ ๊ฐ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
๐ฌ Checked Exception vs Unchecked Exception
Checked Exception์ Exception์ ์์ํ๋ฉฐ, ์ปดํ์ผ ์์ ์ Exception์ catch ํ๋์ง ํ์ธํ๋ค.
์ปดํ์ผ ์์ ์ Exception์ ๋ํด ์ฒ๋ฆฌํ์ง ์์ผ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. (throws๋ก ๋์ง๊ฑฐ๋, ์ก์์ ์ฒ๋ฆฌํ๊ฑฐ๋)
Unchecked Exception์ RuntimeException์ ์์ํ๋ฉฐ, ์ปดํ์ผ ์์ ์ Exception์ catch ํ๋์ง ํ์ธํ์ง ์๋๋ค.
์ก์์ ์ฒ๋ฆฌํ ํ์๊ฐ ์๋ค.
- ์์ธ ์ฒ๋ฆฌ์ 5๊ฐ์ง ๋ฐฉ๋ฒ
๋ณต๊ตฌ : ์์ธ๊ฐ ๋ฐ์ํ์ ๋ ์ ์ ์ํ๋ก ๋๋๋ฆฌ๊ธฐ
ํํผ: thorws๋ฅผ ํตํด์ ๋์ง๋ค. ๋จ, ์ด ๊ฒฝ์ฐ๋ ๋ช
ํํ ์ด์ ๊ฐ ์์ด์ผ ํ๋ค.
๋ฌด์: ์๋ฌด ์ฒ๋ฆฌ๋ ํ์ง ์๊ณ ๋จ์ํ catch๋ฅผ ํด์ค๋ค. ์ด๊ฒ ์ญ์ ๋ช
ํํ ์ด์ ๊ฐ ํ์ํ๋ค. ํน์, ๋จ์ํ ๋ก๊น
ํ๋ ๊ฒฝ์ฐ๋ ์ด์ ํฌํจ๋๋ค.
์ ํ: RuntimeException์ผ๋ก ๋ฐ๊พธ์ด์ ๋์ง ์ ์๋ค. ์ด๋ ๊ฒ ๋๋ฉด ๊ทธ ๋ค์ ํธ์ถ ์ฒด์ด์์๋ ์์ธ์ ๋ํด ์ฒ๋ฆฌ๋ฅผ ํด์ค ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋น์ฆ๋์ค ๋ก์ง์ด ๋ ๋ช
ํํด์ง๋ค๋ ์ฅ์ ์ด ์๋ค.
Q. ๋ ๊ฐ์ง ์ค์์ ์ด๋ค ์ํฉ์์, ์ด๋ค ๊ฒ์ ์ฌ์ฉํ ๊ฒ์ธ๊ฐ์?
์ ๋ checked exception์ ์ฌ๋งํ๋ฉด unchecked exception์ผ๋ก ๊ฐ์ธ์ ์ฒ๋ฆฌํฉ๋๋ค.
์์ธ๊ฐ ๋ฐ์ํ ๊ณณ์ ํด๋น ๋ฐ์ ์ง์ ์์ ์ฒ๋ฆฌํ๊ณ , ์ธ๋ถ๋ก ์ ํ์ํฌ ๊ฒฝ์ฐ ๋น์ฆ๋์ค ๋ก์ง์๋ ์์ธ ๊ด๋ จ ์ฝ๋๊ฐ ๋ค์ด๊ฐ๋ฉด์ ์ฝ๋ ์์ฒด๊ฐ ์์๋ณด๊ธฐ ํ๋ค์ด์ง ๋๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ํ, ์คํ๋ง์์๋ checked exception์ ํธ๋์ญ์ ์ด ๋กค๋ฐฑ๋์ง ์๊ธฐ ๋๋ฌธ์, ์์ธ ์ํฉ์์ ๋ช ์์ ์ผ๋ก unchecked Exception์ ๋ฐ์์์ผ ์์์น ๋ชปํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํ๋ ํธ์ ๋๋ค. (๊ธฐ๋ณธ์ ์ผ๋ก '์์ธ'๊ฐ ๋ฐ์ํ ์ํฉ์ ์ ์ ์คํ ํ๋ฆ์ด ์๋๊ธฐ ๋๋ฌธ์ ํธ๋์ญ์ ๋ด๋ถ์์ ์คํ๋ ํ์์ ๋ํด์ ๋ค์ ๋ณต๊ตฌ๋ฅผ ์ํค๋ ๊ฒ ์๋ฏธ๋ก ์ ์ผ๋ก ๋ง๋ค๊ณ ์๊ฐํฉ๋๋ค.)
๐ฌ ๋ถ๋ณ ๊ฐ์ฒด
๋ถ๋ณ ๊ฐ์ฒด๋ ํญ์ ๋์ผํ ๊ฐ์ ๋ฐํํ๋ ๊ฒ์ด ์๋๋ค. ๋ถ๋ณ ๊ฐ์ฒด๋ ๋ด๋ถ ์ํ๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค๋ ๊ฒ์ด๋ค. ์บก์ํ๋์ด ์๋ ๋ณธ์ธ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ๋ ์๋๊ณ , ์ด๋ ํ ํน์ ํ ๊ฒ์ ๊ฐ๋ฆฌํค๊ณ ์๋ ๊ฒ๋ ์๋๋ค.
- ๋ถ๋ณ ๊ฐ์ฒด๋ ์ด๋ป๊ฒ ์์ฑํ ์ ์์๊น?
๋จผ์ , ๊ฐ๋จํ๊ฒ final ํค์๋๋ฅผ ์๊ฐํ ์ ์๋ค. ์๋ฐ์์ ๋ณ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ๋ณ์ ์ด๊ธฐ ๋๋ฌธ์, final์ ํตํด์ ๋ณ์์ ๋ํด ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ๋ค๊ณ ์ ์ธํ ์ ์๋ค. ์ด๋ ๊ฒ ๋๋ฉด ์ปดํ์ผ ํ์์ ํด๋น ๋ณ์๊ฐ ๋ณํํ๋ ๊ฒ์ ์บ์นํ ์ ์๋ค.
ํ์ง๋ง, final ํค์๋๋ ๋จ์ํ ๋ณ์์ ์ฐธ์กฐ๊ฐ์ ๋ฐ๊พธ์ง ๋ชปํ๋๋ก ๋ง๋ ๊ฒ๋ฟ์ด๋ค. collection์ด๋ custom ๊ฐ์ฒด์ ์ฐธ์กฐ๋ฅผ ํตํด ์ฐ๋ฆฌ๊ฐ ๋ด๋ถ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ ์์ฒด๋ ๋ง์ ์ ์๋ค.
๋ ๋ฒ์งธ๋ก, ๊ฐ์ฒด์ ๋ํด์ ๋ถ๋ณ์ ์ ์งํ๊ธฐ ์ํด์๋ ์ฐ๋ฆฌ๊ฐ ์ง์ ๋ด๋ถ ํ๋๋ฅผ private๋ก ๊ฐ์ถ ๋ค์์, ํด๋น ํ๋์ ๋ํด์ ์์ ์๋ฅผ ์์ ๋ ๋ฐฉ์์ด ์๋ค. ๋ํ, ์ธ๋ถ๋ก ํ๋๋ฅผ ๊บผ๋ด์ฌ ๋ (getter) ๋์ผํ ์ฃผ์๊ฐ์ ๊ฐ์ง์ง ์๋๋ก ์ฐธ์กฐ๊ฐ์ ๋ณ๊ฒฝํ๊ธฐ ์ํด์ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ํ ๋นํ์ฌ ๋ฐํํ ์ ์๋ค. ๋ง์ฝ ์ปฌ๋์
์ด๋ผ๋ฉด new ArrayList<>()๋ฅผ ํ์ฉํ์ฌ ์๋ณธ ๊ฐ์ฒด์์ ์ฃผ์ ๊ณต์ ๋ฅผ ๋์ ์ ์๋ค.
ํ์ง๋ง, ์ด๋ ๊น์ ๋ณต์ฌ๋ผ๊ณ ํ ์ ์๋ค. ๊น์ ๋ณต์ฌ์ ๊ฒฝ์ฐ ์๋ณธ๊ณผ ๋ณต์ฌ๋ณธ์ ๋ชจ๋ ์์๋ค์ ๋ํ ์ฃผ์๊ฐ ๋ฌ๋ผ์ผ ํ์ง๋ง, ๋ฐฉ์ด์ ๋ณต์ฌ๋ ๋จ์ํ ํด๋น ๊ฐ์ฒด๋ฅผ ๋ด๊ณ ์๋ ์ปฌ๋ ์
์ ์ฃผ์๋ง ๋ค๋ฅด๊ณ ๋ด๋ถ ์์๋ค์ ์ฃผ์๋ ๋์ผํ ๊ณณ์ ๊ฐ๋ฆฌํค๊ณ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ์๋ณธ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์ด๋ ํ ์์ฑ์์๊ฒ ์ฃผ์
ํด์ ํด๋น ๊ฐ์ฒด๋ฅผ ์์ฑํ์ ๋, ์๋ณธ ๊ฐ์ฒด์ ๋ณํ๋ฅผ ์ฃผ๊ฒ ๋๋ฉด ๋ณต์ฌ๋ณธ์ ๋ด๋ถ ๊ฐ๋ ๋ฐ๊พธ๊ฒ ๋๋ ๊ฒ์ด๋ค.
- ๋ฐฉ์ด์ ๋ณต์ฌ์ ๊น์ ๋ณต์ฌ
๋ง์ฝ Unmodifiable Collection์ ํ์ฉํ๋ค๋ฉด ์ด๋จ๊น?
์ด๋ ๋ด๋ถ์ ์ผ๋ก set, add ๊ฐ์ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฒ ๋๋ฉด UnsupportedOperationException์ด ๋ฐ์ํ๊ฒ ๋๋ฉฐ, ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๋ง๋ค์ด์ค๋ค. ๊ทธ๋ ๋ค๊ณ ํด๋, ์ฌ์ค ์ด ์ญ์ ๋ถ๋ณ์ ๋ณด์ฅํด์ฃผ์ง๋ ์๋๋ค. ์ฌ์ ํ ๋ด๋ถ์ ์ผ๋ก ํด๋น ๋ฆฌ์คํธ๋ ์๋ณธ ๋ฆฌ์คํธ๋ฅผ ์ฐธ์กฐํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์๋ณธ์ ๋ณํ๊ฐ ์๊ธฐ๋ฉด ํด๋น ๋ฆฌ์คํธ๋ ๋ณํ์ด ๋ฐ์ํ๋ค.
์์ ํ ๋ถ๋ณ์ ํ๊ณ ์ถ๋ค๋ฉด, List.copyOf๋ฅผ ํ์ฉํ๊ฑฐ๋(๋ด๋ถ์ ์ผ๋ก `ImmutableCollections`์ ํ์ฉํ๋ค) Unmodifiable Collection์ ํ ๋ฒ ๋ new ArrayList<>๋ก ๊ฐ์ธ์ผ ํ๋ค.
Q. ๋ถ๋ณ์ ๋ง์กฑํ๋ฉด ๋ฌด์์ด ์ข๋์?
thread-safe๋ฅผ ๋ง์กฑํ๊ฒ ๋ฉ๋๋ค! ์ฒ์ ์์ฑ ์ดํ์๋ ๊ฐ์ฒด ๋ด๋ถ์ ์ํ๊ฐ ๋ณํํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด์ ์์ฑ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น ๊ฐ์ฒด ์์ฒด๋ฅผ ์์ฑํ์ง ์์ ์ ์์ต๋๋ค. (์คํจ ์์์ฑ ๋ณด์ฅ)
์ถ๊ฐ์ ์ผ๋ก ๋ถ๋ณํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๊ฐ์ฒด์ ์์กดํ์ง ์๊ฒ ๋์ด ์์์น ์๊ฒ ์์ ๋๋ ์ผ์ ๋ง์ ์ ์์ต๋๋ค!
๐ฌ ์์๊ณผ ์กฐํฉ
์์์ ๋ถ๋ชจ ํด๋์ค๋ฅผ ์์ ํด๋์ค๊ฐ extend ํ๋ ๊ฒ์ผ๋ก, ๋ถ๋ชจ ํด๋์ค๊ฐ ํ ์ ์๋ ์ผ์ ๋ฌผ๋ ค๋ฐ๊ฒ ๋๋ค.
๋จ, ๋ฌผ๋ ค ๋ฐ์ ์ผ์ ์ํํ๋ ๋ฐฉ์์ ์ค์ค๋ก ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ ๋์ ๋ฐ๋ผ ์ถ๊ฐ์ ์ธ ์ผ์ ํ ์๋ ์๋ค.
๋จ, super() ๋ก ์ธํด ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์ ์๊ฒ ๋๊ธฐ ๋๋ฌธ์ ์บก์ํ๊ฐ ๊นจ์ง๋ค.
์กฐํฉ์ ํ ๊ฐ์ฒด๊ฐ ์์ ์ด ํ ์ ์๋ ์ผ์ ํ๋ ๊ฐ์ฒด๋ฅผ ์ธ์คํด์ค ๋ณ์๋ก ๊ฐ์ง๋ ๊ฒ์ด๋ค.
์ด๋ฏธ ์ธ๋ถ์์ ๋ง๋ค์ด์ง ๊ฐ์ฒด๋ฅผ ์ฃผ์
๋ฐ๊ธฐ ๋๋ฌธ์, ํด๋น ๊ฐ์ฒด์์ ์ ๊ณตํ๋ ๊ณต๊ฐ๋ ๋์๋ง ์ฌ์ฉํ ์ ์๋ค.
Q. ์์๊ณผ ๋น๊ตํ์ ๋ ์กฐํฉ์ด ๊ฐ์ง๋ ์ฅ์ ๊ณผ ๋จ์ ์ ๋ฌด์์ด ์๋์?
์กฐํฉ์ ์ฌ์ฉํ๊ฒ ๋๋ฉดโฆ ์ฐ์ ์์์ด ๊ฐ์ง๊ณ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ๋ชจ ํด๋์ค์ ์์ ํด๋์ค ์ฌ์ด์ ๊ฐ๊ฒฐํฉ์ด ๋ฌธ์ ์ ์ผ๋ก ๋ณผ ์ ์๋๋ฐ์!
๋ถ๋ชจ ํด๋์ค์ ๋ณํ๊ฐ ์์ ํด๋์ค์ ๋ณํ๊น์ง ์ด์ด์ง๋๋ค. ํ์ง๋ง ์กฐํฉ์ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด ์กฐํฉ์ผ๋ก ๊ฐ์ง๊ณ ์๋ ํด๋์ค์ ๋ด๋ถ ์ฌํญ์ด ๋ณ๊ฒฝ๋๋๋ผ๋ ์ด๋ฅผ ๊ฐ์ธ๊ณ ์๋ ํด๋์ค๋ ์ํฅ์ ๋ฐ์ง ์์ ๊ฒ ๊ฐ์์.
๋ค๋ง, ์กฐํฉ์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๊ฒฐ๊ตญ ์ธ์คํด์ค ํ๋๋ก ๊ด๋ฆฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ ํด๋น ๊ฐ์ฒด์์ ๊ด๋ฆฌํด์ผ ๋๋ ์ฑ ์์ด ๋ง์์ง๊ฒ ๋ฉ๋๋ค.
์์์ ํ๋ ํธํ์ฑ์ ๋ง์กฑํ ๋ = ์์ ํ ๋์น๋ ์ ์์ ๋ = is-a ๊ด๊ณ์ผ ๋ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ฆ, ๋ถ๋ชจ ํด๋์ค์ ํ์ ์ผ๋ก ์์ ํด๋์ค๋ฅผ ์ฌ์ฉํด๋ ๊ด์ฐฎ์ ๋ ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
๐ฌ do-while ๊ตฌ์กฐ
Q. ์ ์ธ๊ณผ ์ด๊ธฐํ๊ฐ ๋จ์ด์ ธ์์ ๋ ์ด๋ค ์ ์ด ์ ์ข์๊น์?
์ ์ธ๋ถ ์ด์ ์ ์ด๋ ํ ๋ก์ง์ด ๋ค์ด์จ๋ค๋ฉด NPE๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
null ์ฒดํฌ ๋ก์ง์ด ๋ค์ด๊ฐ์ผ ํ๋ฉฐ, ์ฝ๋ ๊ฐ๋ ์ฑ์ ์ธก๋ฉด์ผ๋ก ๋ดค์ ๋ ์ข์ง ์์ต๋๋ค.
๋ํ, ์ด๊ธฐํ์ ์ ์ธ์ด ๋ถ์ด์๋ ํํ๋ผ๋ฉด ๋ ๊ฑฐ์ ์ฝ๋์์ ๋ณ์์ ๋ํ ๋ณํ๋ฅผ ์ถ์ ํ๊ธฐ๊ฐ ์ฝ๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค!
๐ฌ ์ ๋ต ํจํด
์ ๋ต ํจํด์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์ฌ์ฉํ๋ ๋์์ธ ํจํด ์ค ํ๋๋ก, ์คํ ์ค์ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ์ ์๋๋ก ํ๋ค.
๋ณดํต ์์์ ์ด์ฉํด ๊ตฌํํ๋ฉฐ, ๊ฐ๊ฐ์ ์ ๋ต ๊ฐ์ฒด๋ฅผ ์ ์ํ ๋ค์ ํด๋ผ์ด์ธํธ๊ฐ ์ ์ ํ ์ ๋ต ๊ฐ์ฒด๋ฅผ ์ ํํ์ฌ ์คํํ๋๋ก ๋ง๋ ๋ค.
Q. ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ ๋, ์ ๋ตํจํด์ ์ ์ฉํ๊ธฐ ์ ์ ์ด๋ค ๋ฌธ์ ๊ฐ ์์๊ณ ์ด๋ป๊ฒ ๊ฐ์ ํ๋์ง ๊ฒฝํ์ ๊ธฐ๋ฐํด์ ์๊ธฐํด์ฃผ์ธ์.
์ ๋ ์ ๋ต ํจํด์ ์ฌ๋ค๋ฆฌ ๊ฒ์์์ ์ฌ์ฉํ์๋๋ฐ์! ์ฌ๋ค๋ฆฌ์ ์ ์ ๋ง๋ค ๋ true - false๋ฅผ ๋๋ค์ผ๋ก ์ ๋๋ ์ดํ ํ์ฌ ์ ์ ๋ง๋ค์ง ๋ง์ง๋ฅผ ๊ฒฐ์ ํ์ต๋๋ค. ํ์ง๋ง ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑ ์ ๋๋คํ๊ฒ ๋์ํ๋ ๋ถ๋ถ์ ๋ํด์ ์ ๊ฐ ์ง์ ์์ ํ ์ ์์๊ธฐ ๋๋ฌธ์ ์ ๋๋ ์ดํฐ์ ๋ํ ์ธํฐํ์ด์ค๋ฅผ ์์ฑํ๊ณ , ํ ์คํธ ์์ ํญ์ ๊ฐ์ ๊ฐ์ ๋ฐํํ๋ ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด๋ฅผ ์์ฑํ์ฌ ์ค์ ๋น์ฆ๋์ค ๋ก์ง์์๋ ๋๋คํ๊ฒ, ํ ์คํธ์์๋ ์ํ๋ ๊ฐ์ด ๋์ค๋๋ก ์ค๊ณํ์ฌ TDD ์ ๋ ์ํํ๊ฒ ์งํํ ์ ์์์ต๋๋ค!
๐ฌ String pool
String pool์, JVM์์ String ๊ฐ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ผ์ข
์ '์ ์ฅ์'์ด๋ค.
'new'๋ฅผ ํตํด ์์ฑํ String ๊ฐ์ฒด๋ heap ์์ญ์ ์ ์ฅ๋๊ณ , ๋ฆฌํฐ๋ด๋ก ์์ฑํ ๊ฐ์ฒด๋ 'String pool'์ ์ ์ฅํ๋ค.
์ด๋, String pool์ Heap ๋ด๋ถ์ ์กด์ฌํ๋ฉฐ, JVM ์ด ์์๋ ๋ ์์ฑ๋๊ณ , ํด๋์ค ํ์ผ์ด ๋ก๋๋ ๋ ์ด๊ธฐํ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋๋ง๋ค ์๋ก์ด String pool์ด ์์ฑ๋๋ ๊ฒ์ด ์๋, JVM์ด ์์๋ ๋ ํ ๋ฒ ์์ฑ๋๊ณ ๊ทธ ์ดํ๋ก๋ ๊ณ์ํด์ ์ฌ์ฌ์ฉ๋๋ค. ๋ฆฌํฐ๋ด์ ํ์ฉํ๊ฒ ๋๋ฉด ์ด๋ฏธ ์กด์ฌํ๋ ๊ฐ์ด ์์ ๋ ํด๋น ๊ฐ์ ๊ฐ๋ฆฌํค๋๋ก ํ๋ค.
Q. String pool์ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ญ๊ฐ์?
string์ ์ ๋ง ๋ง์ด ์ฌ์ฉํ๋ ํด๋์ค์ ๋๋ค. ํ์ง๋ง new๋ฅผ ํตํด์ ๊ณ์ ์์ฑํ๊ฒ ๋๋ค๋ฉด heap์ ์ ์ฅ๋๋ฉด์ ๋ฉ๋ชจ๋ฆฌ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค! ๋ฐ๋ฉด, string pool์ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด ์ด๋ฏธ ์กด์ฌํ๊ณ ์๋ ๊ฐ์ฒด์ ๋ํด์ ์ฌ์ฌ์ฉ์ ํ ์ ์๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ์ธก๋ฉด์์ ์ด๋์ ๋ณผ ์ ์์ต๋๋ค.
๐ฌ Try-With-Resources
Q. try-with-resources์ ์ด์ ์ ์ฌ์ฉ๋์๋ ์์๋ฐํ ๋ฐฉ๋ฒ์ ๋นํด ์ด๋ค ์ฅ์ ์ด ์๋์?
์ด์ ์๋ ๊ฐ๋ฐ์๊ฐ ์ง์ finally ๊ตฌ๋ฌธ์์ close๋ฅผ ํตํด ๋ช ์์ ์ผ๋ก ๋ซ์์ค์ผ ํ์ต๋๋ค! ๊ฐ๋ฐ์๊ฐ ์ง์ ์์ฑํ๋ ๋ถ๋ถ์ธ ๊ฒ๋งํผ ์์์น ๋ชปํ ๋ฆฌ์์ค ๋์๊ฐ ์๊ธธ ์ ์์๋ค๋ ๊ฒ ๋จ์ ์ธ๋ฐ try-with-resources๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๊ฐ ๊ทธ๊ฑธ ์ ๊ฒฝ์ธ ํ์ ์์ด ์์์ close๋ฅผ ํธ์ถํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋น๊ต์ ๊ด๋ฆฌํด์ผ ํ๋ ํฌ์ธํธ๊ฐ ์ค์ด๋ค๊ฒ ๋ฉ๋๋ค!
Q. ๊ทธ๋ผ ๊ฐ๋ฐ์์ ์ค์๋ฅผ ๋ฐฉ์งํ ์ ์๋ค๋ ๊ฒ ์ธ์๋ ๋ค๋ฅธ ์ฅ์ ์ ์๋์?
๊ทธ์ธ์๋ ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ๋ง์ฝ try ๊ตฌ๋ฌธ ๋ด์์ ๋ ๋ค์ ๋ฆฌ์์ค ํ ๋น์ด ๋ฐ์ํ ์ ์๋ ์ง์ ์ด ๋ฐ์ํ๋ค๋ฉด depth๊ฐ ๋งค์ฐ ์ปค์ง ํ ๋ฐ try-with-resources์ ์ฌ์ฉํ๋ฉด ์ฒ์์ ํ ๋ฒ์ ์ธ ์์๋ค์ ๋ํด์ ์ด์ด์ค ์ ์์ต๋๋ค.
๋ํ, ์์์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋๋ผ๋ finally์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ฉด, finally์์ ๋ฐ์ํ ์ค๋ฅ๋ง ๋จ๊ฒ ๋์ด์ ์์์ ์ค๋ฅ๋ฅผ ์ก์๋จนํ๊ฒ ๋๋๋ฐ suppressed exception๋ฅผ ํ์ฉํ์ฌ ์ด๋ฌํ ๋ถ๋ถ์ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๐ฌ ์ธํฐํ์ด์ค vs ์ถ์ ํด๋์ค
Q. ์ธํฐํ์ด์ค์ ์ถ์ํด๋์ค ์ค ์ด๋ ๊ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ข๋ค๊ณ ์๊ฐํ์๋์?
์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง ์ ๋ ๊ฐ๋ฐ์ ์ธ ๊ด์ ์์ ๋ณด์์ ๋ ๋ณ๋์ ๊ด๋ฆฌํด์ผ ํ๋ ํ๋๊ฐ ํ์ํ๋ค๋ฉด ์ถ์ ํด๋์ค๋ฅผ, ํ๋์ ๊ฐ์ฒด๊ฐ ๋ค์ํ ํ์๋ฅผ ํด์ผ ํ ๋ (= ๋ค์ค ์์์ด ํ์ํ ๋) ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค๊ณ ์๊ฐํฉ๋๋ค. (๋์ด ๋์ผํ ์ญํ ์ ํด์ผ ํ๋ค๊ณ ๊ฐ์ )
๋ํ, ๊ฐ์ฒด์ ๊ฐ์ฒด ์ฌ์ด์ ๊ด๊ณ์ฑ์ด ์๋ ๊ฐ์ฒด๊ฐ ํด์ผ ํ๋ ํ๋ ๊ท์ฝ์ ์ ์ํ ๋๋ ์ธํฐํ์ด์ค๋ฅผ, ๊ฐ์ฒด์ ์ํ์ ๋ฐ์ ํ๊ฒ ์ฐ๊ด๋๋ ๊ฐ์ฒด๋ผ๋ฉด ์ถ์ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ํธ์ ๋๋ค.
'a๋ b์ ์ํ๋ค' ๋ผ๋ ๊ฐ๋ ์ด๋ผ๋ฉด ์ถ์ ํด๋์ค๋ฅผ (์ฌ๋ฌ ๊ฐ์ ์ํ ์ ์๋ ์ํฉ์ผ ๋), 'a๋ b๋ฅผ ํ ์ ์๋ค'๋ผ๋ ๊ฐ๋ ์ด๋ผ๋ฉด ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๋ง์ฝ, ๋ค์ค์ ๋ํ ๊ฐ๋ ์ ์ ์ธํ๊ณ ๋จ์ผ์ ์ธ ๊ด์ ์์ ๋ณธ๋ค๋ฉด '์ฐ๊ด์ด ๋์ด ์๋์ง, ๊ทธ๋ฆฌ๊ณ ํ ์ ์๋์ง' ์ด 2๊ฐ์ง ๊ด์ ์ผ๋ก ๋ฐ๋ผ๋ณผ ๊ฒ ๊ฐ์ต๋๋ค!
โ๏ธ ๋ ๋ฒจ ์ธํฐ๋ทฐ ํ๊ธฐ
๋ ๋ฒจ ์ธํฐ๋ทฐ๋ฅผ ์ค๋นํ๋ฉด์ ์ธํฐ๋ทฐ์ด 2๋ฒ, ์ธํฐ๋ทฐ์ด, ์ต์ ๋ฒ 3๋ฒ ์ด๋ฐ ์์ผ๋ก ์งํํ๋ค.
์ฐ๋ฆฌ๋ ์ฝ์น๋์ด ์ธํฐ๋ทฐ์ด๋ก ๊ณ์ ์ฐธ์ฌํ๊ธฐ ๋๋ฌธ์ ์ธํฐ๋ทฐ์ด ์
์ฅ์์๋ 3๋ช
์ ์ธํฐ๋ทฐ์ด์ 3๋ช
์ ์ต์ ๋ฒ๋ฅผ ์๋ํด์ผ ํ๋ค ๐ฆ
๋ฑ ์ด๋ฐ ๋ฐฐ์น๋์๋ค. ๊ต์ฅํ ์๋ฐ๋ฉด์ ๊ฐ์ ๋ฐฐ์น๋์๋ค... ใ
๐ฑ ์ธํฐ๋ทฐ์ด๋ก ๋๋ ์
์ฒ์ ์์ํ์ ๋ ์ธํฐ๋ทฐ์ด๋ก ์งํ์ ํ์๋๋ฐ, ์ธํฐ๋ทฐ์ด ์
์ฅ์์๋ ๊ทธ๋ ๊ฒ ๋จ๋ฆฌ์ง ์์๋ค.
์คํ๋ ค ์ง๋ฌธํ๋ ๊ฒ ์ฌ๋ฐ์๋ค... (์ฃ์กํฉ๋๋ค ใ
)
์ธํฐ๋ทฐ์ด๊ฐ ์ค๋นํ ๋ ๋ฒจ ๋ก๊ทธ๋ฅผ ์ฝ์ผ๋ฉด์, '๋๋ ์ด๋ ๊ฒ ์๊ฐํ๋๋ฐ, ์ธํฐ๋ทฐ์ด๋ ์ด๋ป๊ฒ ์๊ฐํ ๊น?'๋ผ๋ ๋ง์ ๊ฐ์ง์ผ๋ก ์ง๋ฌธํ๋ค.
ํนํ ํผ์ ๊ณต๋ถํ๋ฉด์ ์ ๋ชฐ๋๋ ๋ถ๋ถ์ด๋ ์ ๋งคํ๋ ๋ถ๋ถ, ๊ทธ๋ฆฌ๊ณ ์๊ฒฌ์ ๋๋๊ณ ์ถ์ ๋ถ๋ถ์ ๋ํด์ ์ง๋ฌธ์ ๋๋ ธ์๋๋ฐ,
์ธํฐ๋ทฐ์ด๊ฐ ๋ต๋ณํ๋ ๋ด์ฉ์ ๋ค์ผ๋ฉด์ ๋ด ์๊ฐ๋ ์ ๋ฆฌํ๊ณ , ํ์ธ์ ์๊ฒฌ์ ๋ค์ ์ ์์์ด์ ์ข์๋ค.
์ธํฐ๋ทฐ์ด๋ก์ ์ป์ด๊ฐ๊ณ ์ถ๋ค๋ฉด ๋จ์ํ ๊ฐ๋
์ ๋ํด์ ์ง๋ฌธํ๋ ๊ฒ๋ณด๋ค๋, ์๋๊ฐ ์ง๋ฌธ์ ๋ํ ๋ณธ์ธ์ ์๊ฐ์ ํ์ด๋๊ฐ ์ ์๋๋ก ์๋ํ๋ ๊ฒ ์ค์ํ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
๊ทธ๋ฌ๋ฉด์ ๋์์, ๋ฉด์ ๊ด์ ๋ฉด์ ์๋ฅผ ๊ณต๊ฒฉํ๋ ค๋ ์๋๊ฐ ์๋๋ผ, ์ ๋ง ์ด๊ฑฐ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ๊ณ , ์ง๋ฌธ์ ๋ํ ๋ณธ์ธ์ ์๊ฒฌ์ ํ๋ฆฝํ๊ณ ์๋์ง ์์๋ณด๋ ค๊ณ ์ง๋ฌธํ๋๊ตฌ๋... ์ถ์๋ค. ๋ฉด์ ์๊ฐ ์๋ชป๋ ์๊ฒฌ์ ๋งํ๋๋ผ๋, ๊ทธ์ ๋ํด ๋ณธ์ธ๋ง์ ๋ช
ํํ ์ฌ๊ณ ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ์ด๋ป๊ฒ ํด์ ๊ทธ๋ฐ ์๊ฒฌ์ผ๋ก ๋์ถํ๋์ง ์ค๋ช
ํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
๋ฌผ๋ก , ์ด ๊ณผ์ ์์ ๋ฉด์ ๊ด์ด ์๋ชป๋ ๊ฒ์ ๋ํด์๋ ์ง์ด์ฃผ๋ ๊ฒ ๋ง๋ค๊ณ ์๊ฐํ๋ค. ๋ค๋ง, ์ง์ ์ ์ผ๋ก ์ง์ด์ค ํ์๋ ์๋ค.
์ ๋ฉด์ ์์ ๊ผฌ๋ฆฌ์ง๋ฌธ์ ํ๋๋ฉด, ์ฐ์์ ์ธ ์ง๋ฌธ์ ํตํด ๋ณธ์ธ์ ๊ฐ๋
์ด ์ด๋ ์๊ฐ ์ด๊ธ๋ ๊ฑธ ๋ฉด์ ์ ์์ ์ด ํ์
ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฉด์ ์ ํตํด์ ๋ณธ์ธ์ด ๋ช
ํํ๊ฒ ์๊ณ ์๋ ๊ฒ, ๊ทธ๋ฆฌ๊ณ ์ ๋ชจ๋ฅด๋ ๊ฒ์ ๋ํด์ ํ์
ํ๋ ๊ฒ (=๋ฉํ์ธ์ง)์ด ๋ฉด์ ์ ์๊ธฐ๋ฅ์ผ ๊ฒ ๊ฐ๋ค.
๐ฑ ์ต์ ๋ฒ๋ก ๋๋ ์
์ฌ์ค ์ธํฐ๋ทฐ์ด๋ก ์์ ๋๋ ์ธํฐ๋ทฐ์ด๊ฐ ๋งํ๋ ๋ต๋ณ ๋ด์ฉ์ ์์ธํ๊ฒ ์ ์ผ๋ ค๊ณ ๋
ธ๋ ฅํ์๋ค.
๊ธ๋ก ์ ์ผ๋ฉด์ ์๋๊ฐ ๋ต๋ณํ ๊ฒ์ ์๋๋ฅผ ํ์
ํ๊ณ , ์ด์ ๋ํด ๋ค์ ์ง๋ฌธ์ ๋์ง ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์ง๋ง ์ต์ ๋ฒ๋ก ์์ ๋๋ ์ธํฐ๋ทฐ์ด์ ๋๋ต, ๊ทธ๋ฆฌ๊ณ ํ๋๊น์ง ํ ๋ฒ์ ๋ด์ผ ํ์ด์ 20๋ถ์ด ์ ๋ง ๋น ๋ฅด๊ฒ ์ง๋๊ฐ๋ค.
๋์์, ์ธํฐ๋ทฐ์ด๊ฐ ์ด๋ค ์ง๋ฌธ์ ํ๋์ง๋ ํ์
ํด์ผ ํ๋ค. (๊ทธ๋์ ๋ ํ๋ค์๋ ๊ฒ ๊ฐ๋ค ใ
ใ
)
๊ทธ๋๋ ์ต์ ๋ฒ๋ ํด๋น ์ธํฐ๋ทฐ ๊ณผ์ ์์ ์ ์ธ๋ ์ฌ๋์ด๊ธฐ ๋๋ฌธ์ ์ธํฐ๋ทฐ์ด์๊ฒ ์ง์ ์ ์ผ๋ก ์ง๋ฌธ์ ๋์ง ์๊ฐ ์์ด์, ์ธํฐ๋ทฐ์ด๊ฐ ํ ์ง๋ฌธ ์ค์ ๋ด๊ฐ ์ ๋ชจ๋ฅด๋ ๊ฐ๋
๋ ์ข
์ข
์กด์ฌํ์๋๋ฐ ์ด์ ๋ํด ์ค๊ฐ์ค๊ฐ ๋ฉ๋ชจํ ์ ์์์ด์ ์ข์๋ค. (ํนํ ํ๋ธ๊ฐ ์ธํฐ๋ทฐ์ด์ผ ๋ ์ต์ ๋ฒ์์๋๋ฐ, ํ๋ธ์ ์ง๋ฌธ์ด ์์ฒญ ๋ ์นด๋ก์์ ๋๋๋ค... ๋ด ์ธํฐ๋ทฐ์ด๊ฐ ์๋์์ด์ ์ ๋ง ๋คํ ใ
...)
๋ํ, ๋ฐฐ์ฐ๊ณ ์ถ์๋ ์ธํฐ๋ทฐ์ด์ ํ๋๋ ์์๋ค.
์ธํฐ๋ทฐ์ด์ ์ธํฐ๋ทฐ์ด๊ฐ ์๋ก ์ธํฐ๋ทฐ๋ฅผ ํ๋ ๊ฒ๋ณด๋ค๋, ๊ฐ๋ฐ์๋ก์ ๋ํ ๋๋๋ ๊ฒ์ฒ๋ผ ํธํ ๋ถ์๊ธฐ๋ฅผ ์กฐ์ฑํด์ค ์ธํฐ๋ทฐ์ด๋ ์์๋ค.
๊ธด์ฅ๋๋ ์ํฉ์์๋ ๊ณ์ํด์ ์ธํฐ๋ทฐ์ด๋ฅผ ๋ฐ๋ผ๋ณด๋ฉด์ ๋ํ๋ฅผ ํ๋ค๋ ์ง, ์ ์ ํ ์ ์ค์ฒ๋ฅผ ์ฌ์ฉํ๋ค๋์ง... ์ ๋ง๋ค์ ๋ฐฉ๋ฒ๋ค์ ์ง์ผ๋ณด๋ฉด์ ๋ด๊ฐ ์ธํฐ๋ทฐ์ด๊ฐ ๋์์ ๋ ์ด๋ค ํ๋๋ฅผ ๊ฐ์ง๋ฉด ์ข์์ง๋ ๋ฐฐ์ธ ์ ์๋ ์๊ฐ์ด์๋ค.
๐ฑ ์ธํฐ๋ทฐ์ด๋ก ๋๋ ์
๋๋ ์ธ ๋ฒ์งธ ์ฐจ๋ก์๊ธฐ ๋๋ฌธ์ ๋น๊ต์ ๊ธด์ฅ์ ๋จ์น ์ ์์ ์ค ์์์ง๋ง... ์๋์๋ค ๐ฅฒ
์ฒ์ ์ธํฐ๋ทฐ์ด ์๋ฆฌ์ ์์์ ๋ ๋งค์ฐ, ๋ฌด์ฒ ๋จ๋ ธ๋ค.
ํนํ ๋ธ๋ผ์ด์ด String pool์ ๋ด๋ถ ๋์์ ๋ํด์ ์ฌ์ญค๋ณด์
จ์ ๋๋ ์ ๋ชจ๋ฅด๋ ๋ด์ฉ์ด๋ผ ๋นํฉํ์๋๋ฐ, ๋ด ๋๋ฆ๋๋ก ์ฃผ๊ด์ ๊ฐ์ง๊ณ ๋๋ต์ ํ๋๊น ์ด๋ป๊ฒ๋ ์ ๋์ด๊ฐ๊ฒ ๋์๋ค.
์ธํฐ๋ทฐ๋ฅผ ํ ๋ ํ ๊ฐ์ง ์งํจ ์ ์, ์ง๋ฌธ์ด ๋ชจํธํ๋ค๊ณ ๋๊ปด์ง๋ฉด ๋ฌด์กฐ๊ฑด ์ญ์ง๋ฌธ์ ์งํํ๋ ๊ฒ์ด์๋ค.
(์ ๊ฐ ์ง๋ฌธ์ ~~ ์ด๋ ๊ฒ ๋ฐ์๋ค์๋๋ฐ, ๋ง๋์?)
๊ทธ๋ฌ๋ฉด ์ธํฐ๋ทฐ์ด๊ฐ ์ด์ ๋ํด ๋๋ตํ๋ ์๊ฐ์๋ ๋ด๊ฐ ํ ๋ง์ ์ ๋ฆฌํ ์ ์์ด์ ์ข์๋ค. (์ผ์ข
์ ์๊ฐ ๋ฒ๊ธฐ...?)
๊ทธ๋ฆฌ๊ณ , ์ง๋ฌธ์ด ๊ธธ์ด์ง๋ฉด ์ต๋ํ ๋๋ ์ ๋๋ตํ๋ ค๊ณ ํ๋ค. + ๋๊ด์ ํํ๋ ์งํค๋ ค๊ณ ๋
ธ๋ ฅ...
์ฌ์ค 20๋ถ์ด ์ด๋ป๊ฒ ์ง๋๊ฐ์ง ๋ชจ๋ฅผ ์ ๋๋ก ํ ์ง๋๊ฐ๋ค.
๊ทธ๋๋ ๋ค๋ค... ์ข์ ํผ๋๋ฐฑ์ ํด์ฃผ์
จ๋ค. ํผ๋๋ฐฑ ๋ด์ฉ์ ์๋์ ๊ฐ๋ค.
๐ฑ ์ด๋ฒ ๋ ๋ฒจ ํ์ต ์ธก๋ฉด์์ ์ข์ ์ ๊ณผ ๋ถ์กฑํ ์ ์?
- ํ์ตํ ๋ถ๋ถ์ ๋ํ ๊ฒ์ ์๊ฐ์ด ์ด๋ฏธ ์ ์ ๋ฆฌ๊ฐ ๋์ด์๋ ๊ฒ์ผ๋ก ๋๊ปด์ ธ์ ์ข์์ต๋๋ค.
- ๊ถ๊ธํ ์ ์ ๋ํด์ ๋ฐ์ดํธ ์ฝ๋๋ ๋ฏ์ด๋ณด์๊ณ , ๊น์ด์๋ ํ์ต์ ํ๋ค๋ ๊ฒ์ด ์ ๋๊ปด์ก์ต๋๋ค.
- ๋จ์ผ ์ฑ ์ ์์น์ ๋ํ ์๋์ฐจ ์์๊ฐ ์ข์์ต๋๋ค. try-with-resources๋ฅผ ๋งค์ฐ ๊ตฌ์ฒด์ ์ผ๋ก ์ค๋ช ํด์ฃผ์๋ ๋ถ๋ถ์ด ์ข์์ต๋๋ค.
๐ฑ ์ธํฐ๋ทฐ, ๋งํ๊ธฐ ์ธก๋ฉด์์ ์ข์ ์ ๊ณผ ๊ฐ์ ํ ๋ถ๋ถ์?
[์ข์ ์ ]
- ์ด๋ค ๋ถ๋ถ์ ์ค๋ช ํ ๋, ๋จ๊ณ์ ์ผ๋ก ์ด๋ค ๋ถ๋ถ์ ์ค๋ช ์ด ํ์ํ์ง์ ๋ํ ๋ถ๋ถ์ ์ธ์ง์์ผ์ฃผ๋ ๋ฐฉ์์ด ๊ต์ฅํ ์ข๊ฒ ๋๊ปด์ก์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์๊ฐ์ผ๋ก ์๊ฐ์ด ํ์ํ ๋ถ๋ถ์์๋ ์ด๋ป๊ฒ๋ ๋ฐฉํฅ์ ์ก๊ณ ๊ฒฐ๋ก ์ผ๋ก ๊ฐ๋ ๋ชจ์ต์ด ์ธ์๊น์์ต๋๋ค.
- ์ง๋ฌธ์ ๋ฐ์ผ๋ฉด, ์ด๋ค ์ง๋ฌธ์ธ์ง ์์ ์ด ์ดํดํ ๋ฐ๋ฅผ ๋จผ์ ์ค๋ช ํ๊ณ ์์ํด์ ์ข์์ต๋๋ค. ์ ๋ฐ์ ์ผ๋ก ๋ฏธ์ ๋ง๋ค ๋ฌด์์ ๋ฐฐ์ ๋์ง, ๊น์ด์๋ ํ์ต ๊ฒฝํ์ด ๊ตฌ์ฒด์ ์ผ๋ก ์ ๋๋ฌ๋ ๊ฒ ๊ฐ์์. ์ด๋ฐ์ SOLID์์น์ ์ธ์ ์ ์ฉํ๋ ค๊ณ ํ๊ณ ๋ฌด์์ ๋๊ผ๋๊ฐ์ ๋ํ ์ง๋ฌธ์์, ์๋์ฐจ ๋ฏธ์ ์ ์งํํ๋ฉฐ ๋ฐ์ ๋ฆฌ๋ทฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก SOLID์์น์ ์ ์ฉํ๊ฒ ๋์๊ณ ํนํ, ์คํธ๋ง ํ์ ์๋ ๊ตฌ์กฐ์ ๋ํ ์ง๋ฌธ์ด ๋นํฉ์ค๋ฌ์ธ๋ง๋ ํ๋ฐ ์ ์ฐํ๊ฒ ์ ๋์ฒํ์ ๊ฒ ๊ฐ์ต๋๋ค. ์ ๋ฐ์ ์ผ๋ก ๊ฐ์ ์ ์ ์ฐพ์ง ๋ชปํ, ์ข์ ์ธํฐ๋ทฐ์๋ค.
- ์๊ธฐ์ ์ฃผ๊ด์ ๋งค์ฐ ์กฐ๋ฆฌ์๊ฒ ๋งํ๋ค. ์ค๋ช ํ ๋ ์๊ฐ์ ๋ํ ์ด์ , ๊ทผ๊ฑฐ, ์์๊ฐ ์์ด์ ์ข์์ต๋๋ค. ๊ฐ์์ค๋ฌ์ด ์ง๋ฌธ์ ๋ํด ๋์ฒ๋ฅผ ๊ต์ฅํ ์ํ์๋ค์. ์ง๋ฌธ์ ์๋๋ฅผ ๋ค์ ํ ๋ฒ ํ์ธํ๋๊ฒ ๋๋จํ ๊ฒ ๊ฐ์ต๋๋ค.
[๊ฐ์ ํ ์ ]
- ๋ชฉ์๋ฆฌ๊ฐ ์ข ๋ ์ปธ์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค.
- ๋ชฉ์๋ฆฌ๊ฐ ์ฝ๊ฐ๋ง ๋ ์ปธ๋ค๋ฉด ์ ธ๋์ ์๊ฒฌ์ ๋์ฑ ์ ๋ค์ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ ์ด๋๊ณ ๋ณด๋ ๋๋ฌด ์นญ์ฐฌ์ด ๊ฐ๋ํด์ ๋ฏผ๋งํ๋ค... ๐ซ ์ฌ์ค ์ฐ๋ฆฌ ์ธํฐ๋ทฐ์กฐ ๋ถ๋ค์ ๋ค๋ค ์์ฒญ ์ํ์
์ ๋๋ ์นญ์ฐฌ๋ง ๋๋ฆฌ๊ธด ํ๋ค ใ
ใ
๋ชฉ์๋ฆฌ ํฌ๊ธฐ๋ ์์ผ๋ก๋ ์ ์ํด์ผ๊ฒ ๋ค. ์ฌ์ค ๊ธด์ฅํ๋ฉด ๋ง์ด ๋นจ๋ผ์ง๊ฒ ๋์ด์, ์ด ๋ถ๋ถ์ ๊ณ ์น๊ธฐ ์ํด ์ฒ์ฒํ ๋งํ๋ ค๊ณ ๋
ธ๋ ฅํ๋ค ๋ณด๋ ๋ชฉ์๋ฆฌ ๋ฐ์๋ฒจ๋ ํจ๊ป ์์์ก์๋๋ฐ ์ด๋ป๊ฒ... ์ ๊ณ ์ณ๋ด์ผํ๋ ๋ถ๋ถ ์ค ํ๋์ด๋ค.
์ธํฐ๋ทฐ๋ฅผ ์งํํ๋ฉด์ ์์๊ณผ ๋์ด ์ ๋ง์ง ์์ ๋๋ต๋ ๊ฝค ์กด์ฌํ๋ ๊ฒ ๊ฐ์๋ฐ, ์ด๋ป๊ฒ๋ ๋ฌธ์ฅ์ ๋ง๋ฌด๋ฆฌํ๋ ค๊ณ ํ๋ค ๋ณด๋๊น ๊ทธ๋ฐ ์ ๋ค์ ๋น๊ต์ ์ฝํ๊ฒ ๋๊ปด์ก๋ ๊ฒ ๊ฐ๋ค. ์ธํฐ๋ทฐํ ๋ ๊ฐ์ฅ ์ค์ํ ์ ์ ์ง๋ฌธ์ ๋ํ ์๋ ํ์
๋ฐ ๋งํ๋ ๋ฌธ์ฅ์ ๋ํ ๋ง๋ฌด๋ฆฌ์ธ ๊ฒ ๊ฐ๋ค...!
โ๏ธ ๊ฐ์ ํ๊ณ
์ฐํ
์ฝ์ ๋ ๋ฒจ 1 ๊ณผ์ ์ด ๋๋ฌ๋ค. ๋ฒ์จ ํ ๋ฌ์ด ๋์ ์๊ฐ์ด ํ๋ ๋ค๋ ๊ฒ์ด๊ฒ ์ง...
์ฐํ
์ฝ๋ ์ฌํด ์ ํํ ์ผ ์ค์์ ๊ฐ์ฅ ํํ์๋ ์ ํ ์ค ํ๋์ธ ๋งํผ, ๋ด๊ฒ ๋ง์ ์ํฅ์ ์ฃผ๊ณ ์๋ค.
๊ณต๋ถ๋ฅผ ํ ๋๋ , ๋ฌด์์ ํ๋ ๋๋ ์๋ํํ
๋ฐฐ์ฐ๋ ์
์ฅ์ด์๋๋ฐ ์ฐํ
์ฝ์ ์์ ์๋ก์๊ฒ ๋ฐฐ์ฐ๊ณ , ์๋ ค์ฃผ๋ ๊ด๊ณ๊ฐ ๋ ์ ์๋ค๋ ์ฌ์ค ํ๋๊ฐ ๋์๊ฒ๋ ๊ธ์ ์ ์ธ ์ํฅ์ ์ฃผ์๋ค. ๋ญ๋ ์ผ๋จ ๋ฐฐ์ฐ๊ณ ๋๋ฉด ์ด๋ป๊ฒ๋ ๊นจ๋ถ๊ฐ ๋๋ค๋ ์ฌ์ค์ ์ผ๊นจ์์ค ๊ฒ ๊ฐ๋ค.
๋ญ๊ฐ ๋ด๊ฐ ๋จํํ
๋์์ ์ค ์ ์๋ค๋ ๊ทธ ์ฌ์ค ํ๋๋ง์ผ๋ก ๊ณต๋ถ๋ฅผ ๊ณ์ํด์ ํ๊ฒ ๋ง๋๋ ๊ฒ ๊ฐ๋ค.
๋ํ, ํฌ๋ฃจ๋ค์ด ์ ๋ง ์น์ ํ๋ค. ๋ค๋ค ์ด์ ์ ์ด๊ธฐ๋ ํ๊ณ , ์๋ ์ฒํด๋ ์ง๋ฌธํ๋ฉด ๋ณธ์ธ ์ผ์ธ ๊ฒ์ฒ๋ผ ๋๋ต์ ํด์ฃผ์ ๋ค.
๊ทธ๋ฆฌ๊ณ , ๋ด๊ฐ ๋ชจ๋ฅด๋ ์ ์ด ์๋ค๋ ์ฌ์ค์ ๋ถ๋๋ฝ๊ฒ ๋ฐ์๋ค์ด์ง ์๋๋ก ๋ง๋ค์ด์ค๋ค.
๋ชจ๋ฅธ๋ค๊ณ ์ ๋ ๋์๊ฒ ๋ณด์ง ์๊ณ , ๋ณธ์ธ์ด ์๊ฐํ๋ ์๊ฒฌ๊ณผ ๋ค๋ฅด๋๋ผ๋ ์ฐ์ ์๋์ ์๊ฒฌ์ ์ฐจ๋ถํ๊ฒ ๋ค์ด์ค๋ค.
๊ทธ๋ฌ๋ฉด์ ๋ณธ์ธ์ ์๊ฒฌ์ ๋ถ๋๋ฝ๊ฒ ํํํด์ค๋ค. ์ค๋๋นํ๋ ์๋๋ฐฉ์ ๊ธฐ๋ถ์ด ๋๋น ์ง์ง ์๋๋ก, ๋ณธ์ธ์ ์๊ฐ์ ์กฐ๋ฆฌ์๊ฒ ๋งํ๋ ๊ฒ ์ฐธ ์ข์๋ค.
๋ด๊ฐ ์ ๋ชจ๋ฅด๋ ๊ฒ์ ๋ํด ๋ถ๋๋ฌ์ํ์ง ์๋๋ก, ๊ฐ์ด ๋ฐฐ์๋๊ฐ ์ ์๋ ์ฌ๋๋ค์ด๋ผ์ ๋๋ฌด ์ข๋ค ๐
๋ฌผ๋ก ๋ถ์ํ ๋ ๋ค๋ ๋ง๋ค. ๋ ๋ฒจ 1 ๊ณผ์ ์ ์๋ฐ๋ถํฐ ๋ค์ ์์ํ๊ธฐ ๋๋ฌธ์ ์ด์ ์ ํ๋ ์คํ๋ง์ด๋ JPA ๊ด๋ จ ์ง์๋ค์ด ํ๋ฐ๋๊ธฐ ๋๋ฌธ์ด๋ค.
(๊ทผ๋ฐ ์ ์ด์ ํ๋ฐ ์ ๋ ๋งํผ ์ ๋๋ก ๊ณต๋ถํ์ง๋ ์์ == ํฉํธ)
๊ทผ๋ฐ ์ฐจ๋ผ๋ฆฌ ๋ฐ๋ฐ๋ฅ๋ถํฐ ๋ค์ ์์ํ๋๊น ๋ง์์ ํธํ๋ค. ๋ค ์๋กญ๊ฒ ๋ฐฐ์๊ฐ๋ ๋๋์ด๋ค.
์ ํ๊ณผ ์ง์ค์ ์ํ ์ ์๋๋ก ํ๋ ๊ฒ ๊ฐ๋ค. ๋๋ ๋ ๋ฒจ 1 ๊ธฐ๊ฐ ๋์์๋ ์๋ฐ ์ธ์ ๋ค๋ฅธ ๊ฒ๋ค์ ๋ํด์๋ ์์ ์ ๊ฒฝ์ ๊ป๋ค.
์๋ ์๋ ๋ญ๋ ์ง ์ํ๊ณ ์ถ์๋๋ฐ, ์์ฆ์ ๊ทธ๋ฅ ๋ด๊ฐ ๊ณต๋ถํ ๋ถ๋ถ๋งํผ๋ง์ด๋ผ๋ ์ํ์๋ ์๊ฐ๋ง ๋ ๋ค.
๋ฐฉํ ๊ธฐ๊ฐ๋ ๊ทธ๋์ ์คํ๋ง์ด๋ db๋ ์์ ์๋์ง๋ ์์๋ค. ๊ฑ ๋ ๋ฒจ 2 ๋ ํ์ง ๋ญ... ใ
๊ทธ๋ฅ ๋ ๋ฒจ 1 ๊ธฐ๊ฐ ๋์์ ํ๋ ๊ฒ๋ค ํ๊ณ ๊ธ ์ฐ๋ ๊ฑฐ ํ๋๋ก ๋ชฉํ๋ก ์ก์๋ค. ํ๊ณ ๋ค ์จ์ ๋ง์์ด ํธํ๋ค ใ
ใ
๋ ๋ฒจ 2 ๋๋ ์กฐ๊ธ ๋ ๋ถ์ง๋ฐํ๊ฒ ์ด์๋ด์ผ๊ฒ ๋ค. ์์์์...!
'์ฐ์ํํ ํฌ์ฝ์ค > ๋ ๋ฒจ 1' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฐํ ์ฝ 5๊ธฐ] ์ฒด์ค ๊ฒ์ ๊ตฌํ ๋ฏธ์ ํ๊ณ (0) | 2023.04.05 |
---|---|
[์ฐํ ์ฝ 5๊ธฐ] ๋ธ๋์ญ ๊ตฌํ ๋ฏธ์ ํ๊ณ (0) | 2023.04.04 |
[์ฐํ ์ฝ 5๊ธฐ] ์ฌ๋ค๋ฆฌ ํ๊ธฐ ๊ฒ์ ๋ฏธ์ ํ๊ณ (0) | 2023.04.03 |
[์ฐํ ์ฝ 5๊ธฐ] ์๋์ฐจ ๊ฒฝ์ฃผ ๊ฒ์ ํ๊ณ (0) | 2023.02.22 |
[์ฐํ ์ฝ 5๊ธฐ] 1์ฃผ์ฐจ ํ๊ณ ๋ก - ์ฐ๊ทน, ์๋์ฐจ ๊ฒฝ์ฃผ ๊ฒ์ ๊ตฌํํ๊ธฐ (2) | 2023.02.13 |