๐ ์ค๋ ์ฝ์ ๋ฒ์: 10์ฅ, ํด๋์ค
๊นจ๋ํ ํด๋์ค
ํด๋์ค์ฒด๊ณ
์๋ฐ ๊ด๋ก์ ๋ฐ๋ฅด๋ฉด, ๊ฐ์ฅ ๋จผ์ ๋ณ์ ๋ชฉ๋ก์ด ๋์จ๋ค. ์ ์ ๊ณต๊ฐ ์์, ์ ์ ๋น๊ณต๊ฐ ๋ณ์, ๋น๊ณต๊ฐ ์ธ์คํด์ค ๋ณ์ ์์์ด๋ค.
๊ทธ๋ฌ๋ ์ ์์ ๋ฐ๋ฅด๋ฉด ์บก์ํ๋ฅผ ํ์ด์ฃผ๋ ๊ฒ์ ์ธ์ ๋ ์ตํ์ ์๋จ์ด๋ค.์บก์ํ ๋: ๊ด๋ จ์ด ์๋ ๋ณ์์ ํจ์๋ฅผ ํ๋์ ํด๋์ค๋ก ๋ฌถ๊ณ ์ธ๋ถ์์ ์ฝ๊ฒ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ์๋ํ๋ ๊ฒ.
ํด๋์ค๋ ์์์ผ ํ๋ค!
- ํด๋์ค๋ฅผ ๋ง๋ค ๋ ์ฒซ๋ฒ์งธ ๊ท์น์ ํฌ๊ธฐ๋ค. ํด๋์ค๋ ์์์ผ ํ๋ค. ๋ ๋ฒ์งธ ๊ท์น๋ ํฌ๊ธฐ๋ค. ๋ ์์์ผ ํ๋ค.
- ํด๋์ค ์ด๋ฆ์ ํด๋น ํด๋์ค ์ฑ ์์ ๊ธฐ์ ํด์ผ ํ๋ค.
- ๊ฐ๊ฒฐํ ์ด๋ฆ์ด ๋ ์ค๋ฅด์ง ์๋๋ค๋ฉด ํ๊ฒฝ ํด๋์ค ํฌ๊ธฐ๊ฐ ๋๋ฌด ํฌ๊ณ ์ฑ ์์ด ๋๋ฌด ๋ง์์ ์ด๋ค.
๋จ์ผ ์ฑ ์ ์์น(Single Resonpsibility Principle, SRP)
- ๋จ์ผ ์ฑ ์ ์์น์ ํด๋์ค๋ ๋ชจ๋์ ๋ณ๊ฒฝํ ์ด์ ๊ฐ ํ๋, ๋จ ํ๋๋ฟ์ด์ด์ผ ํ๋ค๋ ์์น์ด๋ค.
์์ง๋(Cohesion)
- ์ผ๋ฐ์ ์ผ๋ก ๋งค์๋๊ฐ ๋ณ์๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํ ์๋ก ๋ฉ์๋์ ํด๋์ค๋ ์์ง๋๊ฐ ๋ ๋๋ค.
- ์ฐ๋ฆฌ๋ ์์ง๋ ๋์ ํด๋์ค๋ฅผ ์ ํธํ๋ค. ์์ง๋๊ฐ ๋๋ค๋ ๋ง์ ํด๋์ค์ ์ํ ๋ฉ์๋์ ๋ณ์๊ฐ ์๋ก ์์กดํ๋ฉฐ ๋ ผ๋ฆฌ์ ์ธ ๋จ์๋ก ๋ฌถ์ธ๋ค๋ ์๋ฏธ๊ธฐ ๋๋ฌธ์ด๋ค.
- ์์ง๋๊ฐ ๋์์ง๋๋ก ๋ณ์์ ๋ฉ์๋๋ฅผ ์ ์ ํ ๋ถ๋ฆฌํด ์๋ก์ด ํด๋์ค ๋์ธ ๊ฐ๋ก ์ชผ๊ฐ์ค๋ค.
์์ง๋๋ฅผ ์ ์งํ๋ฉด ์์ ํด๋์ค ์ฌ๋ฟ์ด ๋์จ๋ค
ํด๋์ค๊ฐ ์์ง๋ ฅ์ ์๋๋ค๋ฉด ์ชผ๊ฐ๋ผ!
๋ณ๊ฒฝํ๊ธฐ ์ฌ์ด ํด๋์ค
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ์์ ์ฐ๋ฆฌ๋ ๊ตฌ์ฒด์ ์ธ ํด๋์ค(concrete)์ ์ถ์ ํด๋์ค(abstract)๊ฐ ์๋ค๊ณ ๋ฐฐ์ ๋ค. ๊ตฌ์ฒด์ ์ธ ํด๋์ค๋ ์์ธํ ๊ตฌํ(์ฝ๋)๋ฅผ ํฌํจํ๋ฉฐ ์ถ์ ํด๋์ค๋ ๊ฐ๋ ๋ง ํฌํจํ๋ค๊ณ ๋ ๋ฐฐ์ ๋ค.
- ์์ธํ ๊ตฌํ์ ์์กดํ๋ ์ฝ๋๋ ํ ์คํธ๊ฐ ์ด๋ ต๋ค. 5๋ถ๋ง๋ค ๊ฐ์ด ๋ฌ๋ผ์ง๋ API๋ก ํ ์คํธ ์ฝ๋๋ฅผ ์ง๊ธฐ๋ ์ฝ์ง ์๋ค.
- API๋ฅผ ์ง์ ํธ์ถํ๋ ๋์ ์ธํฐํ์ด์ค๋ฅผ ์์ฑํ ํ ๋ฉ์๋ ํ๋๋ฅผ ์ ์ธํ๋ค. ๋ค์์ผ๋ก ๊ทธ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ํด๋์ค๋ฅผ ๊ตฌํํ๋ค. ์ด์ ์ด ํด๋์ค๋ฅผ ํ๋ด๋ด๋ ํ ์คํธ์ฉ ํด๋์ค๋ฅผ ๋ง๋ค ์ ์๋ค. ํ ์คํธ์ฉ ํด๋์ค๋ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ฉฐ ๊ณ ์ ๋ ์ฃผ๊ฐ๋ฅผ ๋ฐํํ๋ค. ์ฐ๋ฆฌ ํ ์คํธ์ฉ ํด๋์ค๋ ๋จ์ํ ๋ฏธ๋ฆฌ ์ ํด๋์ ํ ๊ฐ๋ง ์ฐธ์กฐํ๋ค.
- ๊ฒฐํฉ๋๊ฐ ๋ฎ๋ค๋ ์๋ฆฌ๋ ๊ฐ ์์คํ ์์๊ฐ ๋ค๋ฅธ ์์๋ก๋ถํฐ ๊ทธ๋ฆฌ๊ณ ๋ณ๊ฒฝ์ผ๋ก๋ถํฐ ์ ๊ฒฉ๋ฆฌ๋์ด ์๋ค๋ ์๋ฏธ๋ค.
- ์ด๋ ๊ฒ ๊ฒฐํฉ๋๋ฅผ ์ต์๋ก ์ค์ด๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๋ ๋ค๋ฅธ ํด๋์ค ์ค๊ณ ์์น์ธ DIP ๋ฅผ ๋ฐ๋ฅด๋ ํด๋์ค๊ฐ ๋์จ๋ค. (Dependency Inversion Principle, ํด๋์ค๊ฐ ์์ธํ ๊ตฌํ์ด ์๋๋ผ ์ถ์ํ์ ์์กดํด์ผ ํ๋ค๋ ์์น์ด๋ค.)
- ์ฐ๋ฆฌ๊ฐ ๊ฐ์ ํ ํด๋์ค๋ ์์ธํ ๊ตฌํ ํด๋์ค๊ฐ ์๋๋ผ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ์ธํฐํ์ด์ค์ ์์กดํ๋ค.
๋๋ฆ ์ํํ๊ธฐ ์ฌ์ด ์ฅ์ด์๋ค. ๋ ๊น๋ํ ์ฝ๋์ ๋ํ ๊ท์น๋ค์ ๋ฐฐ์ฐ๋ฉด์ ๋๊ผฌ์ค์ ์์ ์์ ์์ฑํ๋ ๋ฐฉ์๋ค์ด '์ด๋์ ์ด๋ ๊ฒ ์์ฑํ์ จ๊ตฌ๋' ํ๋ ๋ถ๋ถ๋ค์ด ๋ ์ค๋ฅธ๋ค. ๊ฐ๋ น ํจ์๋ ํด๋์ค๋ฅผ ์์ํ๊ฒ ์ชผ๊ฐ๋ ๋ฐฉ์๋ค์ด ๊ทธ๋ฌ๋ค. ๋ญ ๋ชจ๋ฅด๋ ์๋ด๊ธฐ ์ฝ๋ฉ ํ์ต์๊ฐ ๋ณผ ๋๋ ์ด๋ฏธ ์์ ๋ด์ฉ ์ดํด๋ง์ผ๋ก ๋๊ฐ ์ฉ๋ ๊ณผ๋ถํ๊ธฐ ๋๋ฌธ์... ๊ทธ ๊ณผ์ ๋ค์ด ๋ค ๋ฒ๊ฑฐ๋กญ๊ณ ๊ท์ฐฎ๊ฒ ๋๊ปด์ ธ ๊ทธ๋ฅ ๋ค ํ๋๋ก ๋๋ ค๋๊ณ ์ถ๋ ์ ์ด ์ข ์ข ์์๋ค. 10์ฅ์ ๊ทธ๋ฌํ๋ ์ง๋ ๋ ๋ค์ ๋์๋ณผ ์ ์์๋ ํด๋ฆฐ ์ฝ๋ ๋ถํด๋ฝ์ ๋ง์ง๋ง์ ์ฅ์ํ๋ ๋ถ๋ถ์ด์๋ค. 3์ฃผ์ฌ๊ฐ ์์นจ์ ๋นํ๋ฏผ ์ฑ๊ฒจ๋จน๋ฏ ๊ฐ๋ณ๊ฒ, ๊ทธ๋ฌ๋ ๊พธ์คํ ์ข์ ์ฝ๋์ ๋ํ ๊ท์น๋ค์ ์ตํ ์ ์์๋ ์ ์ตํ ์๊ฐ์ด์๋ค. ์ข์ ์๊ฐ์ ๋ง๋ค์ด์ค ๋ ธ๋ง๋ ์ฝ๋์ ํจ๊ป ์ฐธ์ฌํ๋ ์ฌ๋๋ค์๊ฒ ๊ฐ์ฌํ ๋ง์์ ์ ํ๋ค.
x
์คํธ~ ์ ๋ ํด๋ฆฐ์ฝ๋ ์ฑ ์ฝ์ด๋ณด๊ณ ์ถ์์ด์. ์ด ์ฑ ์ ์ฝ๊ณ ์ฝ๋์์ ๊ฐ์ ๋ ์ ์ด ์๋์? ๐คฉ