ํด๋น ๊ธ์ Robert C.Martin ํด๋ฆฐ ์ฝ๋ ๋ผ๋ ์ฑ ์ ์ฝ๊ณ ํ์ตํ ๋ด์ฉ์ ์ ๋ฆฌ ๋ฐ ํ๊ณ ํ๋ ๊ธ ์ ๋๋ค. ์์ธํ ์ฌํญ์ YES 24 ํด๋ฆฐ ์ฝ๋ - ์ ์์ผ ์ํํธ์จ์ด ์ฅ์ธ ์ ์ ์์ ํ์ธํด์ฃผ์ธ์.
ํด๋ฆฐ ์ฝ๋ - ์ ์์ผ ์ํํธ์จ์ด ์ฅ์ธ ์ ์ (Uncle Bob)
- ์ํค๋ถ์ค
- ์ง์์ด: Robert C.Martin (Uncle Bob)
- ์ฎ๊ธด์ด: ๋ฐ์ฌํธ, ์ดํด์
์ด๋ฒ ์ฅ์์ ์ด์ผ๊ธฐํ๊ณ ์ ํ๋ ๊ฒ
๋์ ์ถ์ํ์ ์์ค, ์์คํ ์์ค์์๋ ๊นจ๋ํจ์ ์ ์งํ๋ ๋ฐฉ๋ฒ
์์คํ ์ ์ ์๊ณผ ์์คํ ์ฌ์ฉ์ ๋ถ๋ฆฌํ๋ผ (construction vs use)
- ์์ ๋จ๊ณ๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ์ด์ผ ํ ๊ด์ฌ์ฌ
- ์ ํ์ ์ธ ์์๋ก๋ Lazy Initializing
- ๊ฐ์ฒด์ ์์ฑ๊ณผ ๋ฐํ์ ๋ก์ง์ด ์์ฌ์๋ค
- ์ฑ ์์ด ์ฌ๋ฌ๊ฐ๋ค
- ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ๊ฐ ๋์ง ์์๋ค
- ์์กด์ฑ ์ฃผ์
์ ์ ์๊ณผ ์ฌ์ฉ์ ๋ถ๋ฆฌํ๋ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ
- ๊ฐ์ฅ ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ
ํ์ฅ
- ์ฒ์๋ถํฐ '์ฌ๋ฐ๋ฅด๊ฒ' ์์คํ
์ ๋ง๋ค ์ ์๋ค๋ ๋ฏฟ์์ ๋ฏธ์ ์ด๋ค.
- ์ฐ๋ฆฌ๋ ์ค๋ ์ฃผ์ด์ง ์ฌ์ฉ์ ์คํ ๋ฆฌ์ ๋ง๊ฒ ์์คํ ์ ๊ตฌํํด์ผ ํ๋ค
- ๋ด์ผ์ ์๋ก์ด ์คํ ๋ฆฌ์ ๋ง๊ฒ ์์คํ ์ ์กฐ์ ํ๊ณ ํ์ฅํ๋ฉด ๋๋ค.
- TDD, Refactoring ์ผ๋ก ์ป์ด์ง๋ ๊นจ๋ํ ์ฝ๋๋ ์ฝ๋ ์์ค์์ ์์คํ ์ ์กฐ์ฅํ๊ณ ํ์ฅํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด์ง๋ค.
- ์์คํ ์์ค์์๋ ์ญ์๋ ์ ์ ํ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ์ด๋ค.
ํก๋จ ๊ด์ฌ์ฌ
- ํก๋จ ๊ด์ฌ์ฌ๋ ํตํด์ ๋ชจ๋์ฑ์ ํ๋ณดํ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ๋ก ์ด๋ค.
- ํน์ ๊ด์ฌ์ฌ๋ฅผ ์ง์ํ๋ ค๋ฉด ์์คํ ์์ ํน์ ์ง์ ๋ค์ด ๋์ํ๋ ๋ฐฉ์์ ์ผ๊ด์ฑ ์๊ฒ ๋ฐ๊พธ์ด์ผ ํ๋ค.
- ๋ํ์ ์ธ ํก๋จ ๊ด์ฌ์ฌ
- Java Proxy
- ์์ ์๋ฐ AOP ํ๋ ์์ํฌ
- AspectJ ๊ด์
ํ ์คํธ ์ฃผ๋ ์์คํ ์ํคํ ์ฒ ๊ตฌ์ถ
- ์์ฃผ ๋จ์ํ๋ฉด์๋ ๋ฉ์ง๊ฒ ๋ถ๋ฆฌ๋ ์ํคํ ์ฒ๋ก ๊ฒฐ๊ณผ๋ฌผ์ ์ถ์ํ๋ค.
- ์ดํ ๊ธฐ๋ฐ ๊ตฌ์กฐ๋ค์ ์ถ๊ฐํ๋ฉฐ ์กฐ๊ธ์ฉ ํ์ฅํด ๋๊ฐ์
์์ฌ ๊ฒฐ์ ์ ์ต์ ํ ํ๋ผ
- ๋ชจ๋๊ณผ ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ๊ฐ ๋๋ค๋ฉด ์ง์ฝ์ ๊ด๋ฆฌ์ ๊ฒฐ์ ์ด ๊ฐ๋ฅํด์ง
- ๊ฐ๋ฅํ ๋ง์ง๋ง ์๊ฐ๊น์ง ๊ฒฐ์ ์ ๋ฏธ๋ฃจ๋ ๋ฐฉ๋ฒ์ด ์ต์ ์ด๋ค
- ๋ช
๋ฐฑํ ๊ฐ์น๊ฐ ์์ ๋ ํ์ค์ ํ๋ช
ํ๊ฒ ์ฌ์ฉํ๋ผ
- ํ์ค์ด ๊ฐ์ ธ๋ค์ฃผ๋ ๋ถํ์ํจ๊ณผ ๋นํจ์จ์ด ์กด์ฌํ ์ ์๋ค.
- ํ์คํ ์ด๋์ ๊ฐ์ ธ์ฌ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ๋ผ
๋์ ํด์๊ณผ ํ๊ณ
์์ฌ ๊ฒฐ์ ์ ์ต์ ํ ํ๋ผ, ๋ด๊ฐ ์ต๊ทผ๋ค์ด ๊ฐ์ฅ ๋ง์ด ๋๋ผ๊ณ ์๋ ๊ฒ๋ค์ด๋ค.
์ฑ๊ธํ ์์ฌ ๊ฒฐ์ ์ ํ ๋๋ฉด ์ฆ, ๋ฌด์ธ๊ฐ ๊ฒฐ์ ์ด ๋ ์ํ๋ก ํ๋ก์ ํธ๊ฐ ์งํ๋๋ค ๋ณด๋ฉด ์์ผ๊ฐ ์ข์์ง๋ ๊ฒฝํ์ ์์ฃผ ํ์๊ณ ๊ทธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ์์ฌ๊ฒฐ์ ์ ์ตํ๋ก ๋ฏธ๋ฃจ๋๋ก ํ์๋ค.
๋น๋จ ํ๋ก์ ํธ ๊ด๋ฆฌ ๋ฟ๋ง ์๋๋ผ ์์คํ ์ค๊ณ์์๋ ์์ ๋ฐฉ๋ฒ์ด ๋งค์ฐ ํจ๊ณผ์ ์ด์๋ค.
์์ฌ๊ฒฐ์ ์ ๋ฏธ๋ฃจ๋ค ๋ณด๋ฉด ์ด๋ ํ ์๊ตฌ์ฌํญ์ด ๋ค์ด์ฌ์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ์ต๋ํ ๋ง์ ์๊ตฌ์ฌํญ์ ์์ฉํ ์ ์๋๋ก ์๊ฐํ ์ ์๊ฒ ๋๋๋ผ.
์ด๋ฌํ ๋ฐฉ๋ฒ์ ์์คํ ์ค๊ณ์์๋ ์ ์ฉ์ํจ๋ค๋ฉด Uncle Bob ๋ง ๋๋ก ๊นจ๋ํ ์์คํ ์ ์ํคํ ์ณ๊ฐ ํ์ํ ์ ์์๊ฒ ๊ฐ๋ค.
๋ํ ํ๊ฐ์ง ๋ ๋๋๋ฐ๊ฐ ์๋ค๋ฉด ๋ช ๋ฐฑํ ๊ฐ์น๊ฐ ์์ ๋ ํ์ค์ ํ๋ช ํ๊ฒ ์ฌ์ฉํ๋ผ ์์ ๋ช๊ฐ์ง ๊ณผ๊ฑฐ์ ๊ธฐ์ต๋ค์ด ์ค์ณ์ง๋๊ฐ๋ค.
๋๋ ์ xxxServiceImpl
์ด๋ผ๋ ํด๋์ค๋ฅผ ์ธ๊น? ์ xxxDAO
๋ผ๋ ํด๋์ค๋ฅผ ์ผ์๊น?
์์ฆ์ ์ ํ์ง๋ ์์ง๋ง ์ฌ์ฉํ๋ ๋น์์๋ ์ ์ฐ๊ณ ์ ์ ๋ฐ ์ด๋ฆ์ ๋ถ์ฌํ๋์ง ๋ชจ๋ฅธ๋ค.
๊ด๋ก์ ๋ฐ๋ผ์ ์ฌ์ฉํ๋ค๊ณ ๋ ํ๋ ์ ๊ด๋ก๊ฐ ๋์๋์ง ์ ๋ชจ๋ฅธ๋ค.
์ด์ ๋น์ทํ ๋งฅ๋ฝ์ผ๋ก ๋ด๊ฐ ์์ง ์์ง๋ ๋ชปํ๋ ๋ช ๋ฐฑํ ๊ฐ์น๊ฐ ์์์๋ ๋ถ๊ตฌํ๊ณ ์ฌ์ฉํ๋ ๋ช๊ฐ์ง์ ํ์ค๋ค์ด ์์๊ฒ์ด๋ค.
๊ฒฝ๊ณํ์
๋๊ธ