๋ก๋ฒํธ ๋งํด์ด 2000๋
๋ ์ด๋ฐ์ ๋ช
๋ช
ํ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ๋ฐ ์ค๊ณ์ ๋ค์ฏ ๊ฐ์ง ๊ธฐ๋ณธ ์์น์ ๋ง์ดํด ํ๋์ค๊ฐ ๋๋ฌธ์์ด ๊ธฐ์ต์ ๋ก ์๊ฐํ ๊ฒ
์ด๋ค. ํ๋ก๊ทธ๋๋จธ๊ฐ ์๊ฐ์ด ์ง๋๋ ์ ์ง ๋ณด์์ ํ์ฅ์ด ์ฌ์ด ์์คํ
์ ๋ง๋ค๊ณ ์ ํ ๋ ์ด ์์น๋ค์ ํจ๊ป ์ ์ฉํ ์ ์๋ค. SOLID ์์น๋ค์ ์ํํธ์จ์ด ์์
์์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ค ์ฝ๋๊ฐ ์ฝ๊ธฐ ์ฝ๊ณ ํ์ฅํ๊ธฐ ์ฝ๊ฒ ๋ ๋๊น์ง ์ํํธ์จ์ด ์์ค ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํ์ฌ ์ฝ๋ ๋์๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด ์ ์ฉํ ์ ์๋ ์ง์นจ
์ด๋ค. ์ด ์์น๋ค์ ์ ์์ผ ์ํํธ์จ์ด ๊ฐ๋ฐ๊ณผ ์ ์์ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ ๋ฐ์ ์ ๋ต์ ์ผ๋ถ๋ค.
SRP(Single Responsibility Principle)
: ๋จ์ผ ์ฑ
์ ์์น, ํด๋์ค์๋ ๋จ ํ๊ฐ์ง ๋ณ๊ฒฝ ์ด์ ๋ง ์กด์ฌํด์ผ ํ๋ค.
์ฌ๊ธฐ์ ๋จ์ผ๊ณผ ์ฑ
์์ ์ด๋ค ๊ธฐ์ค์ ๊ฐ๋๋์ ๋ฐ๋ผ ํ ์์ด ์ปค์ง์๋ ๋ฐ๋๋ก ํ ์์ด ์์์ง์๋ ์๋ ๊ฐ๋
์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ธฐ์ค์ ์ ์ก๊ณ ํด๋น ์์น์ ์งํค๋ ๊ฒ์ด ์ค์ํ๋ค. SRP๋ฅผ ์ค์ํ ํด๋์ค๋ ์์ง๋๊ฐ ๋๊ณ ๊ฒฐํฉ๋๊ฐ ๋ฎ์ ํน์ ๊ธฐ๋ฅ์ ๋ณ๊ฒฝ์ ์ํ ์์ ์ด ํ๊ณณ์ ์ง์ค๋๋ค.
Q. ๋จ์ํ ํด๋์ค ๋ฉ์๋์ ๊ฐ์๋ฅผ ์ฑ ์ ๊ฐ์๋ผ๊ณ ํ ์ ์์๊น?
์ฑ
์์ SW ๋ณ๊ฒฝ์ ์์ฒญํ๋ ํน์ ์ฌ์ฉ์๋ค์ ๋ํด ํด๋์ค/ํจ์๊ฐ ๊ฐ๋ ๊ฒ์ผ๋ก ๊ฐ์ ๋ถ๋ฅ๋ก ๊ตฌ๋ถ๋๋ ๋ฉ์๋์ ์ฆ๊ฐ๋ฅผ ๋จ์ํ ์ฑ
์์ ์ฆ๊ฐ๋ก ๋ณผ ์ ์๋ค. SRP๋ ๋ณ๊ฒฝ์ ๊ด์ ์์ ๋ถ๋ฆฌ๋์ด์ผ ํ๋ค. ๋ง์ฝ ํน์ ๊ธฐ๋ฅ์ ๋ณ๊ฒฝํ๊ธฐ ์ํด ์์ ํ๋๋ฐ ํด๋์ค์ ๋๋ถ๋ถ์ ๊ธฐ๋ฅ์ด ์์ ๋์ง ์๊ฑฐ๋ ํน์ ์ฌ๋ฌ ํด๋์ค๊ฐ ์์ ๋๋ ์ํฉ์ด ๋ฐ์ํ๋ค๋ฉด ์ด๋ SRP ์์น์ ์ํด์ ๋ถ๋ฆฌ๋์ด์ผ ํ๋ค.
(1์ธ 1์ญ) ํด๋น ์์น์ ์ ์งํค์ง ์์ ๊ฒฝ์ฐ, ํจ์์ ๋ณต์ก๋๊ฐ ๋์์ ธ์ ์ถํ ์์ ์ด ์ด๋ ค์ด ๊ตฌ์กฐ๊ฐ ๋๋ค. ํ์ง๋ง ๋ณ๊ฒฝ์ ๊ด์ ์์ ๋ถ๋ฆฌ๋ ์ด์ ๊ฐ ์๋๋ฐ ๋ถ๋ฆฌํ๋ค๋ฉด ์ด๊ฒ์ ๋ถํ์ํ ๋ณต์ก์ฑ์ ๋์ด๋ ํ์์ผ ์ ์๋ค.
OCP(Open/Closed Principle)
: ๊ฐ๋ฐฉ ํ์์ ์์น, ํด๋์ค๋ ํ์ฅ์๋ ์ด๋ ค ์์ผ๋ ๋ณ๊ฒฝ์๋ ๋ซํ ์์ด์ผ ํ๋ค.
LSP(Liskov Substitution Principle)
: ๋ฆฌ์ค์ฝํ ์นํ์ ์์น, ์์๋ฐ์ ํด๋์ค๋ ๊ธฐ์ด ํด๋์ค๋ฅผ ๋์ฒดํ ์ ์์ด์ผ ํ๋ค.
ISP(Interface Segregation Principle)
: ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น, ํด๋ผ์ด์ธํธ์ ๋ฐ์ ํ๊ฒ ์๊ฒ ์ชผ๊ฐ์ง ์ธํฐํ์ด์ค๋ฅผ ์ ์งํ๋ค. ์ฆ, ํ ํด๋์ค๋ ์์ ์ด ์ฌ์ฉํ์ง ์๋ ์ธํฐํ์ด์ค๋ ๊ตฌํํ์ง ๋ง์์ผ ํ๋ค. ํ๋์ ์ผ๋ฐ์ ์ธ ์ธํฐํ์ด์ค ๋ณด๋ค๋, ์ฌ๋ฌ ๊ฐ์ ๊ตฌ์ฒด์ ์ธ ์ธํฐํ์ด์ค๊ฐ ๋ฎ๋ค๋ ์์น์ด๋ค. DIP(Dependency Inversion Principle)
: ์์กด ์ญ์ ์์น, ์ถ์ํ์ ์์กดํด์ผ ํ๋ฉฐ, ๊ตฌ์ฒดํ์ ์์กดํ๋ฉฐ ์๋๋ค.
์ถ์ฒ: YOUTUBE-Kenu Heo
YOUTUBE-์ฝ๋์๋ ํ๋ก๊ทธ๋๋ฐ
ํฐ์คํ ๋ฆฌ-SOLID ์์น