๋ง๋ค๋ฉด์ ๋ฐฐ์ฐ๋ ํด๋ฆฐ ์ํคํ ์ฒ - ํฐ ํ๋ฒ๊ทธ
ํด๋ฆฐ์ฝ๋์ฑ
๋ค์์ผ๋ก ํด๋ฆฐ ์ํค์ฒต์ฒ๋ฅผ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.
01. ๊ณ์ธตํ ์ํค์ฒต์ฒ์ ๋ฌธ์ ๋ ๋ฌด์์ผ๊น?
- ๊ณ์ธตํ ์ํคํ ์ฒ
์์ค์ฝ๋๋ฅผ ์ญํ ๊ณผ ๊ด์ฌ์ฌ์ ๋ฐ๋ผ ๊ณ์ธต์ผ๋ก ๋ถ๋ฆฌํ ์ํคํ ์ฒ
์ ๋ง๋ค์ด์ง ๊ณ์ธตํ ์ํคํ
์ฒ๋ ์ ํ์ ํญ์ ๋ํ๊ณ , ๋ณํํ๋ ์๊ตฌ์ฌํญ๊ณผ ์ธ๋ถ์์ธ์ ๋น ๋ฅด๊ฒ ์ ์ํ ์ ์๊ฒ ํด์ค๋ค.
- ๋ฌธ์
1. ๊ณ์ธตํ ์ํคํ
์ฒ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฃผ๋ ์ค๊ณ๋ฅผ ์ ๋ํ๋ค.
์น ๊ณ์ธต์ ๋๋ฉ์ธ ๊ณ์ธต์ ์์กดํ๊ณ , ๋๋ฉ์ธ ๊ณ์ธต์ ์์์ฑ ๊ณ์ธต์ ์์กดํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์กดํ๊ฒ ๋๋ฏ๋ก, ๊ณ์ธต ์ฌ์ด์ ๊ฐํ ๊ฒฐํฉ์ด ์๊ธด๋ค.
์๋ฅผ๋ค์ด, ORM์ ์ฌ์ฉํ๊ฒ๋๋ฉด ๋๋ฉ์ธ ๊ณ์ธต์์ ์ํฐํฐ์ ์ ๊ทผํ ์ ์๋๋ฐ ์ด๋ ๊ฒ๋๋ฉด ์๋น์ค๋ ์์์ฑ ๋ชจ๋ธ์ ๋น์ฆ๋์ค ๋ชจ๋ธ์ฒ๋ผ ์ฌ์ฉํ๊ฒ ๋์ด ์๋น์ค์์ ์์์ฑ ๊ด๋ จ๋ ์์
๋ค์ ํ๊ฒ๋๋๋ฐ, ์ด๋ฌ๋ฉด ์์์ฑ ์ฝ๋๊ฐ ๋๋ฉ์ธ ์ฝ๋์ ๋
น์๋ค์ด์ ๋ ์ค ํ๋๋ง ๋ฐ๊พธ๋ ๊ฒ์ด ์ด๋ ค์์ง๋ค.
2. ์ง๋ฆ๊ธธ์ ํํ๊ธฐ ์ฌ์์ง๋ค.
๊ณ์ธต์ ์ํคํ
์ฒ์ ์ ์ผํ ๊ท์น์ 'ํน์ ํ ๊ณ์ธต์์๋ ๊ฐ์ ๊ณ์ธต์ ์๋ ์ปดํฌ๋ํธ๋ ์๋์ ์๋ ๊ณ์ธต์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋ค' ์ธ๋ฐ, ์์ ๊ณ์ธต์ ์์นํ ์ปดํฌ๋ํธ์ ์ ๊ทผํ๊ธฐ ์ํด ์ฌ์ด๋ฐฉ๋ฒ์ธ ํธ์ถํ๋ ์ปดํฌ๋ํธ๋ณด๋ค ์๋ ๊ณ์ธต์ผ๋ก ๋ด๋ ค๋ฒ๋ฆฌ๋ ๊ฒ์ ์ ํํ ์ ์๋ค.
์ด๋ ๊ฒ ๊ณ์ ํ๋ค๋ณด๋ฉด ํ์์ ์์์ฑ ๊ณ์ธต์ด ์ ์ ์ปค์ง๊ฒ ๋๋ค.
3. ํ
์คํธํ๊ธฐ ์ด๋ ค์์ง๋ค.
๊ณ์ธตํ ์ํคํ
์ฒ๋ฅผ ์ฌ์ฉํ ๋ ์น ๊ณ์ธต์์ ์์์ฑ ๊ณ์ธต์ผ๋ก ๋ฐ๋ก ์ ๊ทผํ๋ ๋ฑ ๊ณ์ธต์ ๊ฑด๋๋ฐ์ด์ ์ฌ์ฉํ๊ฒ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๋๋ฐ,
์ด๋ ๊ฒ ์ฌ์ฉํ๊ฒ๋๋ฉด ์ฑ
์์ด ์์ด๊ณ ๋๋ฉ์ธ ๋ก์ง์ ์ฝ๋ ์ฌ๊ธฐ์ ๊ธฐ์ ํฉ์ด์ง๊ฒ ๋ง๋ค๋ฉฐ, ์น ๊ณ์ธต ํ
์คํธ์์ ๋๋ฉ์ธ ๊ณ์ธต๋ฟ๋ง ์๋๋ผ ์์์ฑ ๊ณ์ธต๋ ๋ชจํนํด์ผ ํ๋ฏ๋ก ๋จ์ ํ
์คํธ์ ๋ณต์ก๋๊ฐ ์ฌ๋ผ๊ฐ๋ค.
4. ์ ์ค์ผ์ด์ค๋ฅผ ์จ๊ธด๋ค.
์ํคํ
์ฒ๋ ์ฝ๋๋ฅผ ๋น ๋ฅด๊ฒ ํ์ํ๋๋ฐ ๋์์ด ๋์ด์ผ ํ๋ค.
๊ณ์ธตํ ์ํคํ
์ฒ๋ ๋๋ฉ์ธ ์๋น์ค์ '๋๋น'์ ๊ดํ ๊ท์น์ ๊ฐ์ ํ์ง ์๋๋ค.
- ํฌํธ์ ์ด๋ํฐ ์ํคํ ์ฒ
- ๊ฐ์ฅ ๋ฐ๊นฅ์ชฝ ๊ณ์ธต์ ์ ํ๋ฆฌ์ผ์์ ๊ณผ ๋ค๋ฅธ ์์คํ ์ ์ฐ๊ฒฐํ๋ ์ด๋ํฐ๊ฐ ์๊ณ , ๋ค์์ผ๋ก
๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ์์ฃผ ๋์ ์๋น์ค๊ฐ ๋ง๋ค์ด์ง๊ธฐ๋ ํ๋๋ฐ, ๋์ ์๋น์ค๋ ์์์ฑ ๊ณ์ธต์ ๋ง์ ์์กด์ฑ์ ๊ฐ๊ฒ ๋๊ฒ ๋๋ฌธ์ ์ฝ๋ ์์์ ํน์ ์ ์ค์ผ์ด์ค๋ฅผ ์ฐพ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ ๋ค.
=> ์๋น์ค๊ฐ ์ ์ค์ผ์ด์ค๋ฅผ ์ ๊ฒ ๋ด๋นํ ์๋ก ์ฝ๋์ ์ ์ง๋ณด์๊ฐ ์ฌ์์ง๋ค.
5. ๋์ ์์
์ด ์ด๋ ค์์ง๋ค.
๊ณ์ธตํ ์ํคํ
์ฒ๋ ๋ชจ๋ ๊ฒ์ด ์์์ฑ ๊ณ์ธต์ ๋ง๋ค์ด์ง๊ณ ๊ทธ๋ค์์ ๋๋ฉ์ธ ๊ณ์ธต, ์น ๊ณ์ธต ์์๋ก ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์ ํน์ ๊ธฐ๋ฅ์ ๋์์ ํ ๋ช
์ ๊ฐ๋ฐ์๋ง ์์
ํ ์ ์๋ค (๋์์ ์ฌ๋ฌ๋ช
์ด ์์
ํ๊ฒ ๋๋ฉด ์ถฉ๋๋จ)
02. ์์กด์ฑ ์ญ์ ํ๊ธฐ
๊ณ์ธตํ ์ํคํ
์ฒ์ ๋ฌธ์ ์ ์ ๋ํ ๋์
SOLID ์์น ์ค์ํ๊ธฐ
- SRP (Single Responsibility Principle) : ๋จ์ผ ์ฑ
์ ์์น
ํด๋์ค๋ ํ๋์ ์ฑ
์๋ง ๊ฐ์ ธ์ผ ํ๋ฉฐ, ๋ณ๊ฒฝ์ ์ด์ ๋ ํ๋์ฌ์ผ ํ๋ค.
- OCP (Open/Closed Principle) : ๊ฐ๋ฐฉ - ํ์ ์์น
ํ์ฅ์๋ ์ด๋ ค์๊ณ , ๋ณ๊ฒฝ์๋ ๋ซํ์์ด์ผ ํ๋ค.
์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฑฐ๋ ๋ณ๊ฒฝํ ๋ ๊ธฐ์กด ์ฝ๋๋ฅผ ์์ ํ์ง ์๊ณ ๋ ํ์ฅํ ์ ์์ด์ผ ํ๋ค
- LSP (Liskov Substitution Principle) : ๋ฆฌ์ค์ฝํ ์นํ ์์น
ํ๋ก๊ทธ๋จ์์ ๋ถ๋ชจ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ ํด๋์ค๋ก ๊ต์ฒดํด๋ ํ๋ก๊ทธ๋จ์ ๋์์ ๋์ผํด์ผ ํ๋ค.
- ISP (Interface Segregation Principle) : ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น
ํด๋ผ์ด์ธํธ๋ ์์ ์ด ์ฌ์ฉํ์ง ์๋ ์ธํฐํ์ด์ค์ ์์กดํ์ง ์์์ผ ํ๋ค.
- DIP (Dependency Inversion Principle) : ์์กด์ฑ ์ญ์ ์์น
๊ณ ์์ค ๋ชจ๋์ ์ ์์ค ๋ชจ๋์ ์์กดํด์๋ ์ ๋๊ณ , ์ถ์ํ๋ ๊ฒ์ ์์กดํด์ผ ํ๋ค.
์ฝ๋์์ ์ด๋ค ์์กด์ฑ์ด๋ ๊ทธ ๋ฐฉํฅ์ ๋ฐ๊ฟ ์ ์๋ค.
ํด๋ฆฐ ์ํค ํ
์ฒ
๊ฒ์ธต๊ฐ์ ์์กด์ฑ ๋ฐฉํฅ์ ๋ชจ๋ ์๋๋ก ํฅํด์ผํ๋ค.
์ก๊ฐํ ์ํคํ
์ฒ (ํฅ์ฌ๊ณ ๋ ์ํคํ
์ฒ)
'๐Book' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํด๋ฆฐ ์ฝ๋(Clean Code) ์์ฝ (0) | 2024.02.29 |
---|