์์คํ
๋ค์์ ์ผ๋ฐ์ ์ผ๋ก ๋ฐ๋์งํ ์์คํ ํน์ฑ์ ๋๋ค.- ์ต์ํ์ ๋ณต์ก์ฑ. ์ง๋์น๊ฒ ๋ณต์กํ ํ๋ก์ ํธ๋ ํผํด์ผ ํฉ๋๋ค. ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋จ์์ฑ๊ณผ ๋ช ํ์ฑ์ ๋๋ค(๋จ์ํจ = ๋ ์ข์).
- ์ ์ง ๋ณด์ ์ฉ์ด์ฑ. ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ๋ ์ ์ง ๊ด๋ฆฌ๊ฐ ํ์ํ๋ค๋ ์ ์ ๊ธฐ์ตํด์ผ ํฉ๋๋ค(๊ฐ์ธ์ ์ผ๋ก ์ ์ง ๊ด๋ฆฌ์ ๋ํ ์ฑ ์์ด ์๋๋ผ๋). ์ด๋ ์ฝ๋๊ฐ ๋ช ํํ๊ณ ๋ช ํํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
- ๋์จํ ๊ฒฐํฉ. ์ฆ, ํ๋ก๊ทธ๋จ์ ์๋ก ๋ค๋ฅธ ๋ถ๋ถ ๊ฐ์ ์ข ์์ฑ ์๋ฅผ ์ต์ํํฉ๋๋ค(OOP ์์น ์ค์ ๊ทน๋ํ).
- ์ฌ์ฌ์ฉ ์ฑ. ์ฐ๋ฆฌ๋ ๋ค๋ฅธ ์์ฉ ํ๋ก๊ทธ๋จ์์ ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ผ๋ก ์์คํ ์ ์ค๊ณํฉ๋๋ค.
- ํด๋์ฑ. ์์คํ ์ ๋ค๋ฅธ ํ๊ฒฝ์ ์ฝ๊ฒ ์ ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค.
- ์ ๋ํผ ์คํ์ผ. ์ฐ๋ฆฌ๋ ๋ค์ํ ๊ตฌ์ฑ ์์์์ ๊ท ์ผํ ์คํ์ผ์ ์ฌ์ฉํ์ฌ ์์คํ ์ ์ค๊ณํฉ๋๋ค.
- ํ์ฅ์ฑ(ํ์ฅ์ฑ). ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ์๋ฐํ์ง ์๊ณ ์์คํ ์ ํฅ์์ํฌ ์ ์์ต๋๋ค(๊ตฌ์ฑ ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๋ณ๊ฒฝํด๋ ๋ค๋ฅธ ๋ชจ๋ ๊ตฌ์ฑ ์์์ ์ํฅ์ ๋ฏธ์น์ง ์์์ผ ํจ).
์์คํ ์ค๊ณ ๋จ๊ณ
- ์ํํธ์จ์ด ์์คํ . ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฐ์ ์ผ๋ก ๋์์ธํฉ๋๋ค.
- ํ์ ์์คํ /ํจํค์ง๋ก ๊ตฌ๋ถํฉ๋๋ค. ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ตฌ๋ณ๋๋ ๋ถ๋ถ์ ์ ์ํ๊ณ ์ด๋ค ์ฌ์ด์ ์ํธ ์์ฉ ๊ท์น์ ์ ์ํฉ๋๋ค.
- ํ์ ์์คํ ์ ํด๋์ค๋ก ๋๋๋๋ค. ์์คํ ์ ์ผ๋ถ๋ฅผ ํน์ ํด๋์ค์ ์ธํฐํ์ด์ค๋ก ๋๋๊ณ ์ด๋ค ๊ฐ์ ์ํธ ์์ฉ์ ์ ์ํฉ๋๋ค.
- ํด๋์ค๋ฅผ ๋ฉ์๋๋ก ๋๋๊ธฐ. ํ ๋น๋ ์ฑ ์์ ๋ฐ๋ผ ํด๋์ค์ ํ์ํ ๋ฉ์๋์ ์์ ํ ์ ์๋ฅผ ๋ง๋ญ๋๋ค.
- ๋ฐฉ๋ฒ ์ค๊ณ. ๊ฐ๋ณ ๋ฐฉ๋ฒ์ ๊ธฐ๋ฅ์ ๋ํ ์์ธํ ์ ์๋ฅผ ๋ง๋ญ๋๋ค.
์์คํ ์ค๊ณ์ ์ผ๋ฐ ์์น ๋ฐ ๊ฐ๋
๊ฒ์ผ๋ฅธ ์ด๊ธฐํ. ์ด ํ๋ก๊ทธ๋๋ฐ ๊ด์ฉ๊ตฌ์์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ค์ ๋ก ์ฌ์ฉ๋ ๋๊น์ง ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋ฐ ์๊ฐ์ ๋ญ๋นํ์ง ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ด๊ธฐํ ํ๋ก์ธ์ค์ ์๋๊ฐ ๋นจ๋ผ์ง๊ณ ๊ฐ๋น์ง ์์ง๊ธฐ์ ๋ถํ๊ฐ ์ค์ด๋ญ๋๋ค. ์ฆ, ๋ชจ๋ํ ์์น์ ์๋ฐํ ์ ์์ผ๋ฏ๋ก ๋๋ฌด ๋ฉ๋ฆฌ ๊ฐ์ ธ๊ฐ์ง ๋ง์์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ธฐ๋ณธ ๋ฉ์๋ ๋๋ ํฉํ ๋ฆฌ ํด๋์ค ์ ๊ฐ์ ์ผ๋ถ ํน์ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ์ ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ์ด๋ํ๋ ๊ฒ์ด ์ข์ต๋๋ค . ์ข์ ์ฝ๋์ ํน์ง ์ค ํ๋๋ ๋ฐ๋ณต์ ์ธ ์์ฉ๊ตฌ ์ฝ๋๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ์ฝ๋๋ ํ์ํ ๋ ํธ์ถํ ์ ์๋๋ก ๋ณ๋์ ํด๋์ค์ ๋ฐฐ์น๋ฉ๋๋ค.AOP
๋ํ ์ธก๋ฉด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฃผ๋ชฉํ๊ณ ์ถ์ต๋๋ค. ์ด ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ํฌ๋ช ํ ๋ ผ๋ฆฌ๋ฅผ ๋์ ํ๋ ๊ฒ์ ๋๋ค. ์ฆ, ๋ฐ๋ณต๋๋ ์ฝ๋๋ฅผ ํด๋์ค(Aspect)์ ๋ฃ๊ณ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ ๋ ํธ์ถํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํน์ ์ด๋ฆ์ผ๋ก ๋ฉ์๋๋ฅผ ํธ์ถํ๊ฑฐ๋ ํน์ ์ ํ์ ๋ณ์์ ์ก์ธ์คํ ๋์ ๋๋ค. ์ฝ๋๊ฐ ํธ์ถ๋๋ ์์น๊ฐ ์ฆ์ ๋ช ํํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋๋ก aspect๊ฐ ํผ๋์ค๋ฌ์ธ ์ ์์ง๋ง ์ด๊ฒ์ ์ฌ์ ํ โโ๋งค์ฐ ์ ์ฉํ ๊ธฐ๋ฅ์ ๋๋ค. ํนํ ์บ์ฑ ๋๋ ๋ก๊น ํ ๋. ์ผ๋ฐ ํด๋์ค์ ์ถ๊ฐ ๋ ผ๋ฆฌ๋ฅผ ์ถ๊ฐํ์ง ์๊ณ ์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํฉ๋๋ค. ๊ฐ๋จํ ์ํคํ ์ฒ์ ๋ํ Kent Beck์ ๋ค ๊ฐ์ง ๊ท์น:- ํํ๋ ฅ โ ํด๋์ค์ ์๋๊ฐ ๋ช ํํ๊ฒ ํํ๋์ด์ผ ํฉ๋๋ค. ์ด๋ ์ ์ ํ ์ด๋ฆ ์ง์ , ์์ ํฌ๊ธฐ, ๋จ์ผ ์ฑ ์ ์์น ์ค์๋ฅผ ํตํด ๋ฌ์ฑ๋ฉ๋๋ค(์์ธํ ๋ด์ฉ์ ์๋์์ ๊ณ ๋ คํ ๊ฒ์).
- ์์ ๋ฐ ๋ฐฉ๋ฒ์ ์ต์ ์ โ ์์ ์ ๊ฐ๋ฅํ ํ ์๊ณ ์ข๊ฒ ๋ง๋ค๋ ค๋ ์๊ตฌ์์ ๋๋ฌด ๋ฉ๋ฆฌ ๊ฐ ์ ์์ต๋๋ค(๊ฒฐ๊ณผ์ ์ผ๋ก ์ท๊ฑด ์์ ์ํฐ ํจํด์ด ๋ฐ์ํจ). ์ด ์์น์ ๊ฐ๋ฅํ ๋ชจ๋ ์์ ์ ๋ํด ๋ณ๋์ ํด๋์ค๋ฅผ ์์ฑํ์ฌ ์์คํ ์ ์ฝคํฉํธํ๊ฒ ์ ์งํ๊ณ ๋๋ฌด ๋ฉ๋ฆฌ ๊ฐ์ง ์๋๋ก ์๊ตฌํฉ๋๋ค.
- ์ค๋ณต ์์ โ ํผ๋์ ์ผ์ผํค๊ณ ์ต์ ์ด ์๋ ์์คํ ์ค๊ณ๋ฅผ ๋ํ๋ด๋ ์ค๋ณต ์ฝ๋๊ฐ ์ถ์ถ๋์ด ๋ณ๋์ ์์น๋ก ์ด๋๋ฉ๋๋ค.
- ๋ชจ๋ ํ ์คํธ ์คํ โ ๋ชจ๋ ํ ์คํธ๋ฅผ ํต๊ณผํ๋ ์์คํ ์ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ๋ชจ๋ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ํ ์คํธ๊ฐ ์คํจํ ์ ์์ผ๋ฉฐ ๋ฉ์๋์ ๋ด๋ถ ๋ ผ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์์คํ ๋์๋ ์๊ธฐ์น ์์ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ๋์์์ ์ ์ ์์ต๋๋ค.
๋จ๋จํ
์์คํ ์ ์ค๊ณํ ๋ ์ ์๋ ค์ง SOLID ์์น์ ๊ณ ๋ คํ ๊ฐ์น๊ฐ ์์ต๋๋ค.S (๋จ์ผ ์ฑ ์), O (์ด๋ฆผ-๋ซํ), L (๋ฆฌ์ค์ฝํ ๋์ฒด), I (์ธํฐํ์ด์ค ๋ถ๋ฆฌ), D (์์กด์ฑ ์ญ์ ).
์ฐ๋ฆฌ๋ ๊ฐ๊ฐ์ ๊ฐ๋ณ ์์น์ ์ฐ์ฐํ์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ ์ด ๋ฌธ์์ ๋ฒ์๋ฅผ ์ฝ๊ฐ ๋ฒ์ด๋์ง๋ง ์ฌ๊ธฐ์์ ๋ ๋ง์ ๋ด์ฉ์ ์ฝ์ ์ ์์ต๋๋ค .์ํธ ์์ฉ
์๋ง๋ ์ ์ค๊ณ๋ ํด๋์ค๋ฅผ ๋ง๋๋ ๊ฐ์ฅ ์ค์ํ ๋จ๊ณ ์ค ํ๋๋ ์ข์ ์ถ์ํ๋ฅผ ๋ํ๋ด๋ ์ ์ค๊ณ๋ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ณ ํด๋์ค์ ๊ตฌํ ์ธ๋ถ ์ฌํญ์ ์จ๊ธฐ๊ณ ๋์์ ์๋ก ๋ช ํํ๊ฒ ์ผ๊ด๋ ๋ฉ์๋ ๊ทธ๋ฃน์ ์ ์ํ๋ ๊ฒ์ ๋๋ค. SOLID ์์น ์ค ํ๋์ธ ์ธํฐํ์ด์ค ๋ถ๋ฆฌ๋ฅผ โโ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ํด๋ผ์ด์ธํธ(ํด๋์ค)๋ ์ฌ์ฉํ์ง ์์ ๋ถํ์ํ ๋ฉ์๋๋ฅผ ๊ตฌํํด์๋ ์ ๋ฉ๋๋ค. ์ฆ, ์ธํฐํ์ด์ค์ ์ ์ผํ ์์ (๋จ์ผ ์ฑ ์ ์์น๊ณผ ๋งค์ฐ ์ ์ฌํ๋ค๊ณ ์๊ฐํจ)์ ์ํํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ ์ต์ ์์ ๋ฉ์๋๋ก ์ธํฐํ์ด์ค๋ฅผ ๋ง๋๋ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒฝ์ฐ ๋์ ๋์ด ๊ฐ์ ์์ ๋ฉ์๋๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ข์ต๋๋ค. ํ๋์ ๋ถํ์ด ์ค๋ฅธ ์ธํฐํ์ด์ค. ๋คํ์ค๋ฝ๊ฒ๋ ํด๋์ค๋ ๋ ์ด์์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค. ์ธํฐํ์ด์ค ์ด๋ฆ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ง์ ํด์ผ ํฉ๋๋ค. ์ด๋ฆ์ ํ ๋น๋ ์์ ์ ์ต๋ํ ์ ํํ๊ฒ ๋ฐ์ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฌผ๋ก ๊ธธ์ด๊ฐ ์งง์์๋ก ํผ๋์ด ์ค์ด๋ญ๋๋ค. ๋ฌธ์ ์ฃผ์์ ์ผ๋ฐ์ ์ผ๋ก ์ธํฐํ์ด์ค ์์ค์์ ์์ฑ๋ฉ๋๋ค. ์ด๋ฌํ ์ฃผ์์ ๊ฐ ๋ฉ์๋๊ฐ ์ํํด์ผ ํ๋ ์์ , ์ํํ ์ธ์ ๋ฐ ๋ฐํํ ํญ๋ชฉ์ ๋ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.์์
- ๊ณต๊ฐ ์ ์ ์์;
- ๊ฐ์ธ ์ ์ ์์;
- ๊ฐ์ธ ์ธ์คํด์ค ๋ณ์.
ํ๊ธ ํฌ๊ธฐ
์ด์ ์์ ๊ท๋ชจ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์ถ์ต๋๋ค. SOLID ์์น ์ค ํ๋์ธ ๋จ์ผ ์ฑ ์ ์์น์ ์๊ธฐํด ๋ด ์๋ค. ๊ทธ๊ฒ์ ๊ฐ ๊ฐ์ฒด๊ฐ ๋จ ํ๋์ ๋ชฉ์ (์ฑ ์)์ ๊ฐ์ง๋ฉฐ ๋ชจ๋ ๋ฐฉ๋ฒ์ ๋ ผ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๋ฌ์ฑํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค๊ณ ๋ช ์ํฉ๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ํฌ๊ณ ๋ถํ๋ ค์ง ํด๋์ค(์ค์ ๋ก God ๊ฐ์ฒด ์ํฐ ํจํด)๋ฅผ ํผํ๋ผ๊ณ ๋งํ๋ฉฐ, ํด๋์ค์ ์จ๊ฐ ์ข ๋ฅ์ ์๋ก ๋ค๋ฅธ ๋ ผ๋ฆฌ๊ฐ ํฌํจ๋ ๋ง์ ๋ฉ์๋๊ฐ ์๋ ๊ฒฝ์ฐ ํด๋์ค๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ ๋ํด ์๊ฐํด์ผ ํฉ๋๋ค. ๋ช ๊ฐ์ ๋ ผ๋ฆฌ์ ๋ถ๋ถ(ํด๋์ค). ์ด๋ ๊ฒ ํ๋ฉด ์ฃผ์ด์ง ํด๋์ค์ ๋๋ต์ ์ธ ๋ชฉ์ ์ ์๋ฉด ๊ฐ ๋ฉ์๋์ ๋ชฉ์ ์ ์ดํดํ๋ ๋ฐ ์ค๋ ๊ฑธ๋ฆฌ์ง ์๊ธฐ ๋๋ฌธ์ ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ๋์์ง๋๋ค. ๋ํ ํฌํจ๋ ๋ ผ๋ฆฌ๋ฅผ ๋ฐ์ํด์ผ ํ๋ ํด๋์ค ์ด๋ฆ์ ์ฃผ์ํ์ญ์์ค. ์๋ฅผ ๋ค์ด ์ด๋ฆ์ 20๊ฐ ์ด์์ ๋จ์ด๊ฐ ํฌํจ๋ ํด๋์ค๊ฐ ์๋ ๊ฒฝ์ฐ ๋ฆฌํฉํ ๋ง์ ๋ํด ์๊ฐํด์ผ ํฉ๋๋ค. ์์กด์ฌ์ด ๊ฐํ ํด๋์ค์๋ ๊ทธ๋ ๊ฒ ๋ง์ ๋ด๋ถ ๋ณ์๊ฐ ์์ด์ผ ํฉ๋๋ค. ์ค์ ๋ก ๊ฐ ๋ฐฉ๋ฒ์ ํ๋ ๋๋ ๋ช ๊ฐ์ง์ ํจ๊ป ์๋ํ์ฌ ํด๋์ค ๋ด์์ ๋ง์ ์์ง๋ ฅ์ ์ ๋ฐํฉ๋๋ค(ํด๋์ค๋ ํตํฉ๋ ์ ์ฒด์ฌ์ผ ํ๋ฏ๋ก ์ ํํ ๊ทธ๋์ผ ํฉ๋๋ค). ๊ฒฐ๊ณผ์ ์ผ๋ก ํ๊ธ์ ๊ฒฐ์๋ ฅ์ ๋์ด๋ฉด ํ๊ธ ๊ท๋ชจ๊ฐ ์ค์ด๋ค๊ณ ๋น์ฐํ ํ๊ธ ์๊ฐ ๋์ด๋๋ค. ํน์ ๋๊ท๋ชจ ์์ ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด ํด๋์ค ํ์ผ์ ๋ ์์ธํ ์ดํด๋ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ผ๋ถ ์ฌ๋๋ค์๊ฒ๋ ์ด๊ฒ์ด ์ฑ๊ฐ์ ์ผ์ ๋๋ค. ๋ฌด์๋ณด๋ค๋ ๊ฐ ํด๋์ค๋ ๋ค๋ฅธ ํด๋์ค์ ์ต์ํ์ผ๋ก ๊ด๋ จ๋์ด์ผ ํ๋ ์์ ๋ชจ๋์ ๋๋ค. ์ด๋ฌํ ๊ฒฉ๋ฆฌ๋ ํด๋์ค์ ๋ก์ง์ ์ถ๊ฐํ ๋ ๋ณ๊ฒฝํด์ผ ํ๋ ๋ณ๊ฒฝ ํ์๋ฅผ ์ค์ฌ์ค๋๋ค. ๊ฐ ๋ฐฉ๋ฒ์ ๊ทธ๋ค ์ค ํ๋ ๋๋ ๋ช ๊ฐ์ ํจ๊ป ์๋ํ์ฌ ํด๋์ค ๋ด์์ ๋ง์ ์์ง๋ ฅ์ ์ ๋ฐํฉ๋๋ค(ํด๋์ค๋ ํตํฉ๋ ์ ์ฒด์ฌ์ผ ํ๋ฏ๋ก ์ ํํ ๊ทธ๋์ผ ํฉ๋๋ค). ๊ฒฐ๊ณผ์ ์ผ๋ก ํ๊ธ์ ๊ฒฐ์๋ ฅ์ ๋์ด๋ฉด ํ๊ธ ๊ท๋ชจ๊ฐ ์ค์ด๋ค๊ณ ๋น์ฐํ ํ๊ธ ์๊ฐ ๋์ด๋๋ค. ํน์ ๋๊ท๋ชจ ์์ ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด ํด๋์ค ํ์ผ์ ๋ ์์ธํ ์ดํด๋ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ผ๋ถ ์ฌ๋๋ค์๊ฒ๋ ์ด๊ฒ์ด ์ฑ๊ฐ์ ์ผ์ ๋๋ค. ๋ฌด์๋ณด๋ค๋ ๊ฐ ํด๋์ค๋ ๋ค๋ฅธ ํด๋์ค์ ์ต์ํ์ผ๋ก ๊ด๋ จ๋์ด์ผ ํ๋ ์์ ๋ชจ๋์ ๋๋ค. ์ด๋ฌํ ๊ฒฉ๋ฆฌ๋ ํด๋์ค์ ๋ก์ง์ ์ถ๊ฐํ ๋ ๋ณ๊ฒฝํด์ผ ํ๋ ๋ณ๊ฒฝ ํ์๋ฅผ ์ค์ฌ์ค๋๋ค. ๊ฐ ๋ฐฉ๋ฒ์ ๊ทธ๋ค ์ค ํ๋ ๋๋ ๋ช ๊ฐ์ ํจ๊ป ์๋ํ์ฌ ํด๋์ค ๋ด์์ ๋ง์ ์์ง๋ ฅ์ ์ ๋ฐํฉ๋๋ค(ํด๋์ค๋ ํตํฉ๋ ์ ์ฒด์ฌ์ผ ํ๋ฏ๋ก ์ ํํ ๊ทธ๋์ผ ํฉ๋๋ค). ๊ฒฐ๊ณผ์ ์ผ๋ก ํ๊ธ์ ๊ฒฐ์๋ ฅ์ ๋์ด๋ฉด ํ๊ธ ๊ท๋ชจ๊ฐ ์ค์ด๋ค๊ณ ๋น์ฐํ ํ๊ธ ์๊ฐ ๋์ด๋๋ค. ํน์ ๋๊ท๋ชจ ์์ ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด ํด๋์ค ํ์ผ์ ๋ ์์ธํ ์ดํด๋ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ผ๋ถ ์ฌ๋๋ค์๊ฒ๋ ์ด๊ฒ์ด ์ฑ๊ฐ์ ์ผ์ ๋๋ค. ๋ฌด์๋ณด๋ค๋ ๊ฐ ํด๋์ค๋ ๋ค๋ฅธ ํด๋์ค์ ์ต์ํ์ผ๋ก ๊ด๋ จ๋์ด์ผ ํ๋ ์์ ๋ชจ๋์ ๋๋ค. ์ด๋ฌํ ๊ฒฉ๋ฆฌ๋ ํด๋์ค์ ๋ก์ง์ ์ถ๊ฐํ ๋ ๋ณ๊ฒฝํด์ผ ํ๋ ๋ณ๊ฒฝ ํ์๋ฅผ ์ค์ฌ์ค๋๋ค. ์์ง๋ ฅ์ ํ๊ธ ๊ท๋ชจ์ ์ถ์๋ก ์ด์ด์ง๊ณ ๋น์ฐํ ํ๊ธ์ ์๋ ์ฆ๊ฐํฉ๋๋ค. ํน์ ๋๊ท๋ชจ ์์ ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด ํด๋์ค ํ์ผ์ ๋ ์์ธํ ์ดํด๋ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ผ๋ถ ์ฌ๋๋ค์๊ฒ๋ ์ด๊ฒ์ด ์ฑ๊ฐ์ ์ผ์ ๋๋ค. ๋ฌด์๋ณด๋ค๋ ๊ฐ ํด๋์ค๋ ๋ค๋ฅธ ํด๋์ค์ ์ต์ํ์ผ๋ก ๊ด๋ จ๋์ด์ผ ํ๋ ์์ ๋ชจ๋์ ๋๋ค. ์ด๋ฌํ ๊ฒฉ๋ฆฌ๋ ํด๋์ค์ ๋ก์ง์ ์ถ๊ฐํ ๋ ๋ณ๊ฒฝํด์ผ ํ๋ ๋ณ๊ฒฝ ํ์๋ฅผ ์ค์ฌ์ค๋๋ค. ์์ง๋ ฅ์ ํ๊ธ ๊ท๋ชจ์ ์ถ์๋ก ์ด์ด์ง๊ณ ๋น์ฐํ ํ๊ธ์ ์๋ ์ฆ๊ฐํฉ๋๋ค. ํน์ ๋๊ท๋ชจ ์์ ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด ํด๋์ค ํ์ผ์ ๋ ์์ธํ ์ดํด๋ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ผ๋ถ ์ฌ๋๋ค์๊ฒ๋ ์ด๊ฒ์ด ์ฑ๊ฐ์ ์ผ์ ๋๋ค. ๋ฌด์๋ณด๋ค๋ ๊ฐ ํด๋์ค๋ ๋ค๋ฅธ ํด๋์ค์ ์ต์ํ์ผ๋ก ๊ด๋ จ๋์ด์ผ ํ๋ ์์ ๋ชจ๋์ ๋๋ค. ์ด๋ฌํ ๊ฒฉ๋ฆฌ๋ ํด๋์ค์ ๋ก์ง์ ์ถ๊ฐํ ๋ ๋ณ๊ฒฝํด์ผ ํ๋ ๋ณ๊ฒฝ ํ์๋ฅผ ์ค์ฌ์ค๋๋ค.์ฌ๋ฌผ
์บก์ํ
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ๋จผ์ OOP ์์น์ธ ์บก์ํ์ ๋ํด ์ด์ผ๊ธฐํ ๊ฒ์ ๋๋ค. ๊ตฌํ์ ์จ๊ธฐ๋ ๊ฒ์ ๋ณ์๋ฅผ ๊ฒฉ๋ฆฌํ๋ ๋ฉ์๋๋ฅผ ๋ง๋๋ ๊ฒ๊ณผ๋ ๋ค๋ฆ ๋๋ค(๊ฐ๋ณ ๋ฉ์๋, ๊ฒํฐ ๋ฐ ์ธํฐ๋ฅผ ํตํ ์ก์ธ์ค๋ฅผ ์๊ฐ ์์ด ์ ํํ๋ ๊ฒ์ ์บก์ํ์ ์ ์ฒด ์ง์ ์ด ์์ค๋๊ธฐ ๋๋ฌธ์ ์ข์ง ์์ต๋๋ค). ์ก์ธ์ค ์จ๊ธฐ๊ธฐ๋ ์ถ์ํ๋ฅผ ํ์ฑํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์ฆ, ํด๋์ค๋ ๋ฐ์ดํฐ ์์ ์ ์ฌ์ฉํ๋ ๊ณต์ ๋ ๊ตฌ์ฒด์ ์ธ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์๋ ์ฐ๋ฆฌ๊ฐ ์ด ๋ฐ์ดํฐ๋ก ์์ ํ๋ ๋ฐฉ๋ฒ์ ์ ํํ ์ ํ์๊ฐ ์์ต๋๋ค. ์๋ํ๊ณ ๊ทธ๊ฒ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค.๋ฐ๋ฉํ ๋ฅด์ ๋ฒ์น
Demeter์ ๋ฒ์น๋ ๊ณ ๋ คํ ์ ์์ต๋๋ค. Demeter๋ ํด๋์ค ๋ฐ ๋ฉ์๋ ์์ค์์ ๋ณต์ก์ฑ์ ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋๋ ์์ ๊ท์น ์งํฉ์ ๋๋ค. Car ๊ฐ์ฒด๊ฐ ์๊ณ ์ฌ๊ธฐ์ move(Object arg1, Object arg2) ๋ฉ์๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค . ๋ฐ๋ฉํ ๋ฅด์ ๋ฒ์น์ ๋ฐ๋ฅด๋ฉด ์ด ๋ฉ์๋๋ ๋ค์์ ํธ์ถํ๋ ๊ฒ์ผ๋ก ์ ํ๋ฉ๋๋ค.- Car ๊ฐ์ฒด ์์ฒด ์ ๋ฉ์๋ (์ฆ, "this" ๊ฐ์ฒด);
- move ๋ฉ์๋ ๋ด์์ ์์ฑ๋ ๊ฐ์ฒด์ ๋ฉ์๋ ;
- ์ธ์๋ก ์ ๋ฌ๋ ๊ฐ์ฒด์ ๋ฉ์๋( arg1 , arg2 );
- ๋ด๋ถ Car ๊ฐ์ฒด์ ๋ฉ์๋(๋ค์ "this").
๋ฐ์ดํฐ ๊ตฌ์กฐ
๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ๊ด๋ จ ์์์ ๋ชจ์์ ๋๋ค. ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ๊ณ ๋ คํ ๋ ๋ฉ์๋๊ฐ ์๋ํ๋ ๋ฐ์ดํฐ ์์ ์งํฉ์ด ์์ต๋๋ค. ์ด๋ฌํ ๋ฉ์๋์ ์กด์ฌ๋ ์์์ ์ผ๋ก ๊ฐ์ ๋ฉ๋๋ค. ์ฆ, ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์์ (์ฒ๋ฆฌ)ํ๋ ๊ฒ์ด ๋ชฉ์ ์ธ ๊ฐ์ฒด์ ๋๋ค. ์ผ๋ฐ ๊ฐ์ฒด์์ ์ฃผ์ ์ฐจ์ด์ ์ ์ผ๋ฐ ๊ฐ์ฒด๋ ์๋ฌต์ ์ผ๋ก ์กด์ฌํ๋ค๊ณ ๊ฐ์ ๋๋ ๋ฐ์ดํฐ ์์์ ๋ํด ์๋ํ๋ ๋ฉ์๋ ๋ชจ์์ด๋ผ๋ ๊ฒ์ ๋๋ค. ์ดํดํ๋์? ์ผ๋ฐ ๊ฐ์ฒด์ ์ฃผ์ ์ธก๋ฉด์ ๋ฉ์๋์ ๋๋ค. ๋ด๋ถ ๋ณ์๋ ์ฌ๋ฐ๋ฅธ ์๋์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์๋ ์ฌ๊ธฐ์ ๊ฐ์ฅ ์ค์ํ ์ ์ฅ๋ ๋ฐ์ดํฐ ์์๋ก ์์ ์ ์ง์ํ๊ธฐ ์ํ ๋ฉ์๋๊ฐ ์์ต๋๋ค. ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ํ ์ ํ์ ๋ฐ์ดํฐ ์ ์ก ๊ฐ์ฒด(DTO)์ ๋๋ค. ์ด๊ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ , ์์ผ์์ ๋ฉ์์ง ๊ตฌ๋ฌธ ๋ถ์ ๋ฑ์ ์ํํ ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ณต์ฉ ๋ณ์ ๋ฐ ๋ฉ์๋(๋๋ ์ฝ๊ธฐ/์ฐ๊ธฐ๋ฅผ ์ํ ๋ฉ์๋๋ง ์์)๊ฐ ์๋ ํด๋์ค์ ๋๋ค. ๋ฐ์ดํฐ๋ ์ผ๋ฐ์ ์ผ๋ก ์ค๋ ๊ธฐ๊ฐ ๋์ ์ด๋ฌํ ๊ฐ์ฒด์ ์ ์ฅ๋์ง ์์ต๋๋ค. ๊ฑฐ์ ์ฆ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ํ๋ ์ํฐํฐ ์ ํ์ผ๋ก ๋ณํ๋ฉ๋๋ค. ์ํฐํฐ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ด์ง๋ง ๊ทธ ๋ชฉ์ ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ค์ํ ์์ค์์ ๋น์ฆ๋์ค ๋ ผ๋ฆฌ์ ์ฐธ์ฌํ๋ ๊ฒ์ ๋๋ค. DTO์ ๋ชฉ์ ์ ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ ๋๋ค. DTO์ ์: ๋ฐ์ดํฐ ๊ตฌ์กฐ์ด๊ธฐ๋ ํ์ง๋ง ๊ทธ ๋ชฉ์ ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ค์ํ ์์ค์์ ๋น์ฆ๋์ค ๋ ผ๋ฆฌ์ ์ฐธ์ฌํ๋ ๊ฒ์ ๋๋ค. DTO์ ๋ชฉ์ ์ ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ ๋๋ค. DTO์ ์: ๋ฐ์ดํฐ ๊ตฌ์กฐ์ด๊ธฐ๋ ํ์ง๋ง ๊ทธ ๋ชฉ์ ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ค์ํ ์์ค์์ ๋น์ฆ๋์ค ๋ ผ๋ฆฌ์ ์ฐธ์ฌํ๋ ๊ฒ์ ๋๋ค. DTO์ ๋ชฉ์ ์ ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ ๋๋ค. DTO์ ์:
@Setter
@Getter
@NoArgsConstructor
public class UserDto {
private long id;
private String firstName;
private String lastName;
private String email;
private String password;
}
๋ชจ๋ ๊ฒ์ด ์ถฉ๋ถํ ๋ช
ํํด ๋ณด์ด์ง๋ง ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ์ก์ข
์ ์กด์ฌ์ ๋ํด ๋ฐฐ์๋๋ค. ํ์ด๋ธ๋ฆฌ๋๋ ์ค์ํ ๋
ผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๊ณ , ๋ด๋ถ ์์๋ฅผ ์ ์ฅํ๊ณ , ์ ๊ทผ์(get/set) ๋ฉ์๋๋ฅผ ํฌํจํ๋ ๋ฉ์๋๊ฐ ์๋ ๊ฐ์ฒด์
๋๋ค. ์ด๋ฌํ ๊ฐ์ฒด๋ ์ง์ ๋ถํ๊ณ ์ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค. ๊ทธ๊ฒ๋ค์ด ๋ฌด์์ ์ํ ๊ฒ์ธ์ง ๋ช
ํํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ๋ค์ ํผํด์ผ ํฉ๋๋ค โ ์์๋ฅผ ์ ์ฅํ๊ฑฐ๋ ๋
ผ๋ฆฌ๋ฅผ ์คํํฉ๋๊น?
๋ณ์ ์์ฑ ์๋ฆฌ
๋ณ์์ ๋ํด ์กฐ๊ธ ์๊ฐํด ๋ด ์๋ค. ๋ณด๋ค ๊ตฌ์ฒด์ ์ผ๋ก ์์ฑํ ๋ ์ด๋ค ์์น์ด ์ ์ฉ๋๋์ง ์๊ฐํด ๋ด ์๋ค.- ์ด์์ ์ผ๋ก๋ ๋ณ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ง์ ์ ๋ณ์๋ฅผ ์ ์ธํ๊ณ ์ด๊ธฐํํด์ผ ํฉ๋๋ค(๋ง๋ค๊ณ ์์ด๋ฒ๋ฆฌ์ง ๋ง์ญ์์ค).
- ๊ฐ๋ฅํ๋ฉด ๋ณ์๋ฅผ ์ต์ข ๋ณ์๋ก ์ ์ธํ์ฌ ์ด๊ธฐํ ํ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๋๋ก ํ์ญ์์ค.
- ์ผ์ข ์ for ๋ฃจํ์์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ์นด์ดํฐ ๋ณ์๋ฅผ ์์ง ๋ง์ญ์์ค. ์ฆ, ์ ๋กํํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ชจ๋ ๋ ผ๋ฆฌ๊ฐ ๊นจ์ง ์ ์์ต๋๋ค.
- ์์ฑ์์์ ๋ณ์๋ฅผ ์ด๊ธฐํํด์ผ ํฉ๋๋ค.
- ์ฐธ์กฐ๊ฐ ์๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ฑฐ๋( new SomeObject() ) ์ฌ์ฉํ์ง ์๋ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ๊ฐ์ฒด๊ฐ ์ฌ์ฉ๋ ํ ๋ค์ ๊ฐ๋น์ง ์์ง ์ฃผ๊ธฐ ๋์ ์ญ์ ๋๊ณ ํด๋น ๋ฆฌ์์ค๊ฐ ๋ญ๋น๋์ง ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ์ ํํ์ญ์์ค.
- ๋ณ์์ ์๋ช (๋ณ์ ์์ฑ๊ณผ ๋ง์ง๋ง ์ฐธ์กฐ ์๊ฐ ์ฌ์ด์ ๊ฑฐ๋ฆฌ)์ ๊ฐ๋ฅํ ํ ์งง๊ฒ ์ ์งํ์ญ์์ค.
- ๋ฃจํ๋ฅผ ํฌํจํ๋ ๋ฉ์๋์ ์์ ๋ถ๋ถ์ด ์๋๋ผ ๋ฃจํ ์ง์ ์ ๋ฃจํ์ ์ฌ์ฉ๋ ๋ณ์๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
- ํญ์ ๊ฐ์ฅ ์ ํ๋ ๋ฒ์์์ ์์ํ๊ณ ํ์ํ ๊ฒฝ์ฐ์๋ง ํ์ฅํฉ๋๋ค(๋ณ์๋ฅผ ๊ฐ๋ฅํ ํ ๋ก์ปฌ๋ก ๋ง๋ค์ด์ผ ํจ).
- ๊ฐ ๋ณ์๋ ํ ๊ฐ์ง ๋ชฉ์ ์ผ๋ก๋ง ์ฌ์ฉํ์ญ์์ค.
- ์จ๊ฒจ์ง ๋ชฉ์ ์ด ์๋ ๋ณ์, ์๋ฅผ ๋ค์ด ๋ ์์ ์ฌ์ด์ ๋ณ์ ๋ถํ ์ ํผํ์ญ์์ค. ์ด๋ ํด๋น ์ ํ์ด ๊ทธ ์ค ํ๋๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์ ํฉํ์ง ์์์ ์๋ฏธํฉ๋๋ค.
ํ๋ ์์
์ํ "์คํ์์ฆ: ์ํผ์๋ III - ์์ค์ ๋ณต์"(2005)์์
-
๊ท์น #1 - ์ปดํฉํธํจ. ์ด์์ ์ผ๋ก๋ ๋ฉ์๋๊ฐ 20์ค์ ์ด๊ณผํ์ง ์์์ผ ํฉ๋๋ค. ์ฆ, ๊ณต์ฉ ๋ฉ์๋๊ฐ ํฌ๊ฒ "์ฆ๊ฐ"ํ๋ ๊ฒฝ์ฐ ๋ ผ๋ฆฌ๋ฅผ ๋ถ๋ฆฌํ์ฌ ๋ณ๋์ ์ ์ฉ ๋ฉ์๋๋ก ์ด๋ํ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
-
๊ท์น #2 โ if , else , while ๋ฐ ๊ธฐํ ๋ฌธ์ ๋ธ๋ก์ด ๋ง์ด ์ค์ฒฉ๋๋ฉด ์ ๋ฉ๋๋ค. ์ค์ฒฉ์ด ๋ง์ผ๋ฉด ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ํฌ๊ฒ ๋จ์ด์ง๋๋ค. ์ด์์ ์ผ๋ก๋ 2๊ฐ ์ดํ์ ์ค์ฒฉ๋ {} ๋ธ๋ก์ด ์์ด์ผ ํฉ๋๋ค .
๋ํ ์ด๋ฌํ ๋ธ๋ก์ ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ณ ๋จ์ํ๊ฒ ์ ์งํ๋ ๊ฒ์ด ๋ฐ๋์งํฉ๋๋ค.
-
๊ท์น #3 โ ๋ฉ์๋๋ ํ๋์ ์์ ๋ง ์ํํด์ผ ํฉ๋๋ค. ์ฆ, ๋ฉ์๋๊ฐ ๋ชจ๋ ์ข ๋ฅ์ ๋ณต์กํ ๋ ผ๋ฆฌ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ ๋ฉ์๋๋ฅผ ํ์ ๋ฉ์๋๋ก ๋๋๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฉ์๋ ์์ฒด๋ ์ฌ๋ฐ๋ฅธ ์์๋ก ๋ค๋ฅธ ๋ชจ๋ ์์ ์ ํธ์ถํ๋ ๊ฒ์ด ๋ชฉ์ ์ธ ํ์ฌ๋๊ฐ ๋ฉ๋๋ค.
ํ์ง๋ง ์์ ์ด ๋๋ฌด ๋จ์ํด์ ๋ณ๋์ ๋ฉ์๋์ ๋ฃ์ ์ ์๋ ๊ฒฝ์ฐ์๋ ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ์ฌ์ค, ๋๋ก๋ ์ฐธ์์๊ฒ ๋ํฌ๋ฅผ ๋ฐ์ฌํ๋ ๊ฒ์ฒ๋ผ ๋๊ปด์ง ์ ์์ง๋ง ์์ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ ์ ๊ณตํฉ๋๋ค.
- ๋ ๋์ ์ฝ๋ ์ดํด;
- ๋ฐฉ๋ฒ์ ๊ฐ๋ฐ์ด ์งํ๋จ์ ๋ฐ๋ผ ๋ ๋ณต์กํด์ง๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ๋ฐฉ๋ฒ์ด ๊ฐ๋จํ๋ฉด ๊ธฐ๋ฅ์ ๋ณต์กํ๊ฒ ๋ง๋๋ ๊ฒ์ด ์กฐ๊ธ ๋ ์ฌ์ธ ๊ฒ์ ๋๋ค.
- ๊ตฌํ ์ธ๋ถ ์ ๋ณด๋ ์จ๊ฒจ์ ธ ์์ต๋๋ค.
- ๋ ์ฌ์ด ์ฝ๋ ์ฌ์ฌ์ฉ;
- ๋ณด๋ค ์์ ์ ์ธ ์ฝ๋.
-
์คํ ๋ค์ด ๊ท์น โ ์ฝ๋๋ ์์์ ์๋๋ก ์ฝ์ด์ผ ํฉ๋๋ค. ์ฝ๋๋ฅผ ๋ฎ๊ฒ ์ฝ์์๋ก ๋ ผ๋ฆฌ๋ฅผ ๋ ๊น์ด ํ๊ณ ๋ค๊ฒ ๋ฉ๋๋ค. ๊ทธ ๋ฐ๋๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ๋ ๋์ด ์ฌ๋ผ๊ฐ์๋ก ๋ฐฉ๋ฒ์ด ๋ ์ถ์์ ์ ๋๋ค. ์๋ฅผ ๋ค์ด switch ๋ฌธ์ ๊ฐ๊ฒฐํ์ง ์๊ณ ๋ฐ๋์งํ์ง ์์ง๋ง switch๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ํผํ ์ ์๋ค๋ฉด ๊ฐ๋ฅํ ํ ๊ฐ์ฅ ๋ฎ์ ์์ค์ ๋ฉ์๋๋ก ์ ํํด์ผ ํฉ๋๋ค.
-
๋ฉ์๋ ์ธ์ โ ์ด์์ ์ธ ์ซ์๋ ๋ฌด์์ ๋๊น? ์ด์์ ์ผ๋ก๋ ์ ํ ์์ต๋๋ค :) ํ์ง๋ง ์ ๋ง ๊ทธ๋ฐ ์ผ์ด ์ผ์ด๋ ๊น์? ์ฆ, ์ธ์๊ฐ ์ ์์๋ก ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ธฐ ์ฝ๊ณ ํ ์คํธํ๊ธฐ๊ฐ ๋ ์ฝ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ ํ ์ ์ ์์ ์ธ์๋ฅผ ๊ฐ๋๋ก ๋ ธ๋ ฅํด์ผ ํฉ๋๋ค. ํ์คํ์ง ์์ ๊ฒฝ์ฐ ์ ๋ ฅ ๋งค๊ฐ๋ณ์๊ฐ ๋ง์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๋ชจ๋ ์๋๋ฆฌ์ค๋ฅผ ์์ํด ๋ณด์ญ์์ค.
-
๋ํ ์ ๋ ฅ ๋งค๊ฐ๋ณ์๋ก ๋ถ์ธ ํ๋๊ทธ๊ฐ ์๋ ๋ฉ์๋๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค. ์ด๋ ๊ทธ ์์ฒด๋ก ๋ฉ์๋๊ฐ ๋ ์ด์์ ์์ ์ ์ํํจ์ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ ๋๋ค(์ฐธ์ด๋ฉด ํ ๊ฐ์ง ์์ ์ํ, ๊ฑฐ์ง์ด๋ฉด ๋ค๋ฅธ ์์ ์ํ). ์์์ ์ด ๊ฒ์ฒ๋ผ ์ด๊ฒ์ ์ข์ง ์์ผ๋ฉฐ ๊ฐ๋ฅํ๋ฉด ํผํด์ผ ํฉ๋๋ค.
-
๋ฉ์๋์ ๋ง์ ์์ ์ ๋ ฅ ๋งค๊ฐ ๋ณ์๊ฐ ์๋ ๊ฒฝ์ฐ(๊ทน๋จ์ ์ธ ๊ฐ์ 7์ด์ง๋ง ์ค์ ๋ก๋ 2-3๊ฐ ์ดํ์ ์๊ฐํด์ผ ํจ) ์ธ์ ์ค ์ผ๋ถ๋ฅผ ๋ณ๋์ ๊ฐ์ฒด๋ก ๊ทธ๋ฃนํํด์ผ ํฉ๋๋ค.
-
์ ์ฌํ(์ค๋ฒ๋ก๋๋) ๋ฉ์๋๊ฐ ์ฌ๋ฌ ๊ฐ ์๋ ๊ฒฝ์ฐ ์ ์ฌํ ๋งค๊ฐ ๋ณ์๋ฅผ ๋์ผํ ์์๋ก ์ ๋ฌํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ฐ๋ ์ฑ๊ณผ ์ฌ์ฉ์ฑ์ด ํฅ์๋ฉ๋๋ค.
-
๋ฉ์๋์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฌํ ๋ ๋งค๊ฐ๋ณ์๊ฐ ๋ชจ๋ ์ฌ์ฉ๋์๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋งค๊ฐ๋ณ์๊ฐ ์ ํ์ํ๊ฐ์? ์ธํฐํ์ด์ค์์ ์ฌ์ฉํ์ง ์๋ ๋งค๊ฐ๋ณ์๋ฅผ ์๋ผ๋ธ ๋ค์ ์๋ฃํ์ญ์์ค.
- try/catch๋ ๋ณธ์ง์ ์ผ๋ก ๊ทธ๋ค์ง ์ข์ ๋ณด์ด์ง ์์ผ๋ฏ๋ก ๋ณ๋์ ์ค๊ฐ ๋ฉ์๋(์์ธ ์ฒ๋ฆฌ ๋ฉ์๋)๋ก ์ฎ๊ธฐ๋ ๊ฒ์ด ์ข์ต๋๋ค.
public void exceptionHandling(SomeObject obj) { try { someMethod(obj); } catch (IOException e) { e.printStackTrace(); } }
GO TO FULL VERSION