์ด๋ฒ์ ๋ฐฐ์ธ ๊ฒ
- SOLID๋
- ์์น๋ณ ์์
- ๊ฒฐ๋ก
SOLID๋
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์ดํด๊ฐ ์ฌ์ด, ์ ์ฐํ, ์ ์ง๋ณด์ ๊ฐ๋ฅํ SW(Soft-Ware: ์ํํธ์จ์ด)๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์๋ ๋์ด์ง ๋์์ธ ์์น์ด๋ค. SOLID ์์น์ ์๊ตฌํ ๊ธฐ๋ฅ์ด ๋ณ๊ฒฝ๋๊ฑฐ๋ ์ฐ๋ฆฌ๊ฐ ํ์ฌ ์กด์ฌํ๋ ํ๋ก๊ทธ๋จ์ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ถ์ ๋, ์์คํ ์ ํฐ ๋ณ๊ฒฝ ์์ด, ์ง์ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ๋ง๋ค ์ ์๋๋ก ๋์์ค๋ค.
SOLID๋ 5๊ฐ์ง ์์น์ ์ ์ผ ์ฒซ ๊ธ์๋ฅผ ๋ฐ์ ๋ง๋ค์๋ค.
- S : Single Resposibility Priciple / ๋จ์ผ ์ฑ ์ ์์น
- O : Open Closed Principle / ๊ฐ๋ฐฉ ํ์ ์์น
- L : Liskov Substitution Principle / ๋ฆฌ์ค์ฝํ ์นํ ์์น
- I : Interface Segragation Principle / ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น
- D : Dependency Inversion Principle/ ์์กด์ฑ ์ญ์ ์์น
์ 5๊ฐ์ง๋ก ๊ตฌ์ฑ๋์ด์๋ค.
์์น๋ณ ์์
Single Responsibility Principle / ๋จ์ผ ์ฑ ์ ์์น
ํ๋์ ํด๋์ค๋ ํ๋์ ์ฑ ์๋ง ๊ฐ์ ธ์ผํ๋ค.
์์) ๊ณ ์์ด๋ ๋ฐฅ์ ๋จน๊ณ , ๊ฑท๊ณ , ์ฐ๋ ํ๋์ ๋น์ฐํ ๊ธฐ๋ฅ์ด์ง๋ง print, log ๊ฐ์ ํ๋์ ๊ณ ์์ด์ ๊ธฐ๋ฅ์ด ์๋๋ค.
์ด๊ฒ์ ๋จ์ผ ์ฑ ์ ์์น์ ์๋ฐฐ๋๋ค.
๋ฐ๋ผ์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํด์ผ ํ๋ค.
Open Closed Principle / ๊ฐ๋ฐฉ ํ์ ์์น
ํ์ฅ์๋ ์ด๋ ค ์์ผ๋ ๋ณ๊ฒฝ์๋ ๋ซํ ์์ด์ผ ํ๋ค.
์์)
๋๋ฌผ์ ๋ํ๋ด๋ Anumal ํด๋์ค๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ค.
๊ฐ ๋๋ฌผ๋ค์ ์ข ๋ฅ๋ฅผ ๋ฐ๊ณ ํด๋น ๋๋ฌผ์ ์์์๋ฆฌ๋ฅผ ์ถ๋ ฅํ๋ hey Method๊ฐ ์๋ค.
๊ฐ, ๊ณ ์์ด ์ด์ธ์ ๋๋ฌผ์ ์๋ ฅ ๋ฐ๋ ๊ฒฝ์ฐ ํด๋น ๋๋ฌผ์ ์ธ์ ์๋ฆฌ๋ฅผ ์ถ๊ฐํด์ฃผ์ด์ผ๋ง ์ธ์์๋ฆฌ๋ฅผ ์ถ๋ ฅํ ์ ์๋ค.
์ด๋ ํ์ฅ์ ๋ซํ์๋ ์ฆ ๊ฐ๋ฐฉ ํ์ ์์น์ ์๋ฐฐ๋๋ค.
Liskov Substitution Principle / ๋ฆฌ์ค์ฝํ ์นํ ์์น
๊ฐ์ฒด๋ ํ๋ก๊ทธ๋จ์ ์ ํ์ฑ์ ๊นจํธ๋ฆฌ์ง ์์ผ๋ฉด์ ํ์ ํ์ ์ ์ธ์คํด์ค๋ก ๋ฐ๊ฟ ์ ์์ด์ผํ๋ค.
์ค์ ๊ตฌํ์ฒด์ธ ์์ ์ธ์คํด์ค๋ ์ธ์ ๋ ์ง ๋ถ๋ชจ ๋๋ ์ธํฐํ์ด์ค๊ฐ ์ ๊ณตํด์ผ ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ค๋ฅธ ๊ตฌํ์ฒด๋ก ๋ฐ๊ฟ ์ ์๋ค.
์์)
๋ถ๋ชจ ํด๋์ค์ธ Cat์ ์์ ๋ฐ์ Black Cat ํด๋์ค๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ค.
๊ณ ์์ด ์ธ์คํด์ค๋ฅผ ๋ง๋ ํ ํด๋น ๊ณ ์์ด๋ฅผ ์๋ธ ํด๋์ค์ธ ๊ฒ์ ๊ณ ์์ด๋ก ์นํ์ ํด๋ ์ ์๋ํด์ผํ๋ค.
๋ค๋ง, ๋ฌ๊ธ์์ด ์์ ํ ์์ฑ์ด ๋ค๋ฅธ Fish๋ก ์นํํ๋ ๊ฒ์ ๋ฆฌ์ค์ฝํ ์นํ ์์น์ ์๋ฐฐ๋๋ค.
Interface Segragation Principle / ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น
์ธํฐํ์ด์ค๊ฐ ํด๋ผ์ด์ธํธ์์ ํ์ํ์ง ์์ Method๋ฅผ ์ ๊ณตํ์ง ์์์ผ ํ๋ค.
์ธํฐํ์ด์ค๋ฅผ ๊ธฐ๋ฅ๋ณ๋ก ์๊ฒ ์ชผ๊ฐ์ด ํน์ ํด๋ผ์ด์ธํธ์ฉ ์ธํฐํ์ด์ค๋ก ๋ชจ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ณ๊ฒฝ์ ๋ํด ์์กด์ฑ์ ๋ฎ์ถ๊ณ ์ ์ฐํ๊ฒ ๋์ฒํ ์ ์๋ค.
์์)
์๋ฅ์์ฉ์ฐจ : ๋ฌผ ์์์๋ ๋ ์์์ ๋ชจ๋ ๋ค๋ ์ ์๊ฒ ๋ง๋ ์๋์ฐจ
์๋ฅ์์ฉ์ฐจ๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ ๋ฌผ์ด๋ ๋ ์์ ์ด์ ํ ์ ์๋ ๊ธฐ๋ฅ์ด ์์ด์ผํ๋ค.
ํ์ง๋ง ๋ฌผ์์๋ง ๋ค๋ ์ ์๋ ๊ธฐ๋ฅ, ๋ ์์๋ง ๋ค๋ ์ ์๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด์ ์๋ฅ์์ฉ์ฐจ์ ๊ธฐ๋ฅ์ ์ ๋ถ ์ง์ด ๋ฃ์ผ๋ฉด ๋ถํ์ํ Method๋ฅผ ์ง๋ ์๋์ฐจ๊ฐ ๋ง๋ค์ด์ง ๊ฒ์ด๋ค. ์ด๊ฒ์ ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น์ ์๋ฐฐ๋๋ค.
Dependency Inversion Principle / ์์กด๊ด๊ณ ์ญ์ ์์น
๊ตฌ์ฒดํ์ ์์กดํ๋ฉด ์ ๋๊ณ ์ถ์ํ์ ์์กดํด์ผ ํ๋ค.
High Level ๋ชจ๋์์ Low Level ๋ชจ๋๋ค์ ์์กดํ๊ฒ ๋ง๋๋ ๊ฒ์ด ์๋ ์ค๊ฐ์ ์ถ์ํ ๋ชจ๋์ ๋ง๋ค์ด High Level ๋ชจ๋๊ณผ Low Level ๋ชจ๋์ด ์์กดํ ์ ์๊ฒ ๋ง๋ค์ด์ค๋ค.
์์)
High Level → Low Level
High Level → ์ถ์ํ ๋ชจ๋ ← Low Level
๊ฒฐ๋ก
์ด๋ฒ์ ํด๋ฆฐ ์ํคํ ์ณ ์ฑ ์ ๊ตฌ๋งค ํ ์ต์ด๋ถํฐ SOLID ๋ฐ ์ฌ๋ฌ๊ฐ์ง ์ ์ฐ์ฑ์ ๋ํ ๊ฐ์กฐ๋ฅผ ํ๋ ๊ฒ์ ๋ณด๊ณ ํ ๋ฒ ์ ๋ฆฌํด๋ณด๋ ์๊ฐ์ด ํ์ํ๋ค๊ณ ๋๊ผ๋ค.
์ฑ ์ด๋ ๊ฐ์ ๋ชจ๋ ๊ทธ์ ์ฝ๊ธฐ๋ง ํ๊ณ ๋๋๋ค๋ฉด ์ ํํ๊ฒ ๋ด ๊ฒ์ด ๋๊ธฐ๊ฐ ํ๋ค ๊ฒ ๊ฐ์ ๊ฐ์์ ์ฑ ์์ ๊ฐ์กฐํ๋ ๋ด์ฉ์ ์์ฃผ ๋ธ๋ก๊น ํ์ง ์์๊น ์ถ๋ค.
์ฐธ์กฐ
'Development' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฐ๋ฐ ๋ธ๋ก๊ทธ๋ฅผ ์์ํ๋ ค๋ ๋น์ ํน์ ๋์๊ฒ (1) | 2023.04.28 |
---|