SOLID ์ค๊ณ ์ ์ ์ ๋ํด ์์๋ณด์.
SOLID ์ ์ ์ผ๋ก ์ด๋ฃฐ ์ ์๋ ๊ฒ
- ์ํํธ์จ์ด ์ค๊ณ๋ฅผ โ์ ์ฐํ๊ฒโ ํ ์ ์๋ค.
- ์ ์ฐํ ์ํํธ์จ์ด ์ค๊ณ, ์ฆ ์ถ์์ ์ธ ์ค๊ณ๋ก ์ปคํ๋ง์ ์ ๊ฑฐํ ์ ์๋ค.
- ๋ค๋ง, ์ถ์์ ์ผ๋ก ๋ ์๋ก ์ดํดํ๊ธฐ ์ด๋ ค์์ง๋ ์ธก๋ฉด์ด ์๊ธฐ ๋๋ฌธ์ ์ ์ง๋ณด์ ์ธก๋ฉด์์ ์ ์ํฅ์ ์ค ๊ฐ๋ฅ์ฑ๋ ์๋ค.
๋์์ด ๋ ๋งํ ๊ณณ
- ๋๊ท๋ชจ ํ๋ก์ ํธ
- ๋ชจ๋ ํ๋ก์ ํธ์ ์ ์ฉํ ์ ์๋ค๊ณ ์๊ฐํ์ง๋ ๋ง์.
- ์ง์ ์ /๊ตฌ์ฒด์ ์ธ ๊ฒ์ด ๋ ์ดํดํ๊ธฐ ์ฝ๋ค.
- ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด์ ์ ์ฐ์ฑ์ด ํ์ํด์ง๋ ์์ ์ ๋์์ด ๋ ๊ฒ์ด๋ค.
- ์์ ์๋ ์ธ์ฃผ ๊ฐ๋ฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋ ์ ์ฐ์ฑ์ด ์ค์ํ๋ค.
- ์ฆ, ์์ ์๋ SOLID๊ฐ ๋ ๋ง์ด ๋์๋ค.
- ๊ณ์ฝ์ ์คํ์ ๋ฐ๋ผ ๊ธ์ก์ ์ฐ์ ํ์๋ค.
- ์์ฆ์ ์์ ์๊ตฌ์ฌํญ, ์ฆ์ ๋ณ๊ฒฝ์ฌํญ ๋๋ฌธ์ ์ฌ์ฌ์ฉ์ฑ ๋์ ์ค๊ณ๊ฐ ๋์์ด ์๋ ์ ์๋ค.
๋จ์ผ ์ฑ ์
Only do one thing, One reason to change
- ํด๋์ค์ ์กด์ฌ ์ด์ ๋ ํ๋์ฌ์ผ๋ง ํ๋ค.
- ํ ํจ์์์ ๋๋ฌด ๋ง์ ์ผ์ ํ์ง๋ง๋ผ > ํ์ฅ
- ๊ทธ๋ฐ๋ฐ ํ๋๋ผ๋ ์๋ฏธ๊ฐ ์ ํํ ๋ฌด์์ผ๊น?
- ํ๋์ ๊ฐ๋ ์ด ๋งค์ฐ ์ฃผ๊ด์ ์ด๋ค.
- ์ด๋ ๊ฒฐ๊ตญ ๊ฐ๋ ์ฑ๊ณผ ๊ด๋ จ๋ ์ด์ผ๊ธฐ๋ค.
- ์ฌ๋์ด ํ๋ฒ์ ์ฝ๊ฒ ์ดํดํ ์ ์๋ ์ ๋ณด์ ํฌ๊ธฐ์ ๋ํ ์ด์ผ๊ธฐ๋ค.
๋จ์ผ ์ฑ ์ ์ ์ ์ ์์
- ์ด ์ฝ๋๋ฅผ ๋ณด๋ ๋๋ถ๋ถ์ ์ฌ๋์ด ์ดํดํ ์ ์๋ ํฌ๊ธฐ๋ก ํด๋์ค๋ฅผ ๋ง๋ค์.
- ๊ฐ๊ด์ ์ผ๋ก ๋ง๋ค๊ฒ ๋ค๊ณ ๋ฉ์๋ ๊ฐ์ ์ ํ๊ณผ ๊ฐ์ ๊ท์น์ ์ ํ์ง ๋ง์.
- ์งง์๋ ์ ์ฝํ๋ ๊ธ์ด ์๊ณ , ๊ธธ์ด๋ ์ ์ฝํ๋ ๊ธ์ด ์๋ค.
- ์ด๊ฑด ์ฌ์ค ํจ๊ป ์ผํ๋ ํ์์ ์ ํด์ผํ๋ ๋ถ๋ถ์
๋จ์ผ ์ฑ ์ ์ ์ ์ ์ด๊ฒผ์์ ๋ณด์ฌ์ฃผ๋ ์งํ
- ํด๋์ค ์ด๋ฆ์
And
๊ฐ ๋ค์ด๊ฐ ๊ฒฝ์ฐ - ์ด๊ฑด ๋ฉ์๋ ์ด๋ฆ์๋ ์ ์ฉ๋จ
๊ฐ๋ฐฉ-ํ์
Open for extension, Closed for modification
- ํด๋์ค ๋ด๋ถ ์์ ์์ด ๋์์ ํ์ฅํ ์ ์์ด์ผ ํ๋ค.
- Switch, if ๋ฌธ์ ์ฌ์ฉํด์ ํน์ ๊ฐ์ฒด๋ฅผ ์์ ํ๋ ๊ฒ์ ์ด๊ธ๋ ์
- ์์ + ๋คํ์ฑ์ ์ฌ์ฉํ์๋ ๋ง
- ์ด๊ฑธ ์ ์ ์ฉํ๋ฉด ๋จ์ผ ์ฑ ์ ์ ์ ๋ ์ด๋ฃฐ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
๊ทน๋จ์ ์ธ ์ฃผ์ฅ
- ํ๋ฒ ๋ง๋ ํด๋์ค๋ ์ ๋๋ก ๋ฐ๊พธ๋ฉด ์๋จ
- ๋ฐฉํฅ์ฑ ์์ฒด๋ ์ข๋ค.
- ํ์ง๋ง ๋ฐ๊ฟ์ผ ํ๋ ์ํฉ๋ ์ถฉ๋ถํ ๋ง๋ค.
- ๋ฐ๊พธ๋๊ฒ ์ ์ง๋ณด์์ ๋ ์ข์ ์๋
- breaking change (ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ ์์ ์ฌํญ)
- ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ํ์ง ๋ง์.
- git๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์์ ์ ์ฌ์ฉํ๋ ํด๋์ค ์ง์๋ ๋ณต๊ตฌ ๊ฐ๋ฅํจ
๋ฆฌ์ค์ฝํ ์นํ
- ์์ ๊ฐ์ฒด๋ฅผ ๋ถ๋ชจ ๊ฐ์ฒด๋ก ๋์ฒดํ๋๋ผ๋ ๋์ํด์ผ ํ๋ค.
- ์ฆ, ๋ถ๋ชจ๊ฐ ํ ์ ์์๋ ์ผ์ ์์๋ ํ ์ ์์ด์ผ ํ๋ค.
ํ๊ณ
- ๋งค์ฐ ๋ง๋ ๋ง์ด์ง๋ง ์ด๋ ค์ธ ์ ์๋ค.
- ๋ชจ๋ ์์์ ์ถ์ํํ ๊ฒ์ด ๋ถ๋ชจ๋ผ ํ ์ ์๋ค.
- ๊ทธ๋ฐ๋ฐ, ์์์ ์ถ๊ฐํ๋ ๊ณผ์ ์์ ๋ถ๋ชจ์ ๋์์ ๋ฐ๊ฟ์ผ ํ๋ ์ํฉ์ด ์์ ์ ์๋ค.
- ์ฆ, ์ถ์ํ๋ ๋ถ๋ชจ๊ฐ ํญ์ ๋ง์ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ค.
- ์ถ์ํ๋ ๊ตฌ์ฒด์ ์ธ ๊ฒ๋ค์ ๊ณตํต์ ์ ๋ชจ์์ ๋ง๋๋ ๊ฒ์ด๋ค.
- ๋ง์ฝ ๊ตฌ์ฒด์ ์ธ ๊ฐ์ฒด๊ฐ ์ถ๊ฐ๋๋ค๋ฉด, ์ด ๋ชจ๋ ๊ฒ์ ๊ณตํต์ ์ ์ฐพ์ ๋ถ๋ชจ๋ฅผ ๊ณ ์ณ์ฃผ์ด์ผ ํ๋๊ฒ ์๋ช ํ๋ค.
- ๋ค๋ง ์ด๊ฒ ์์ฃผ ์ผ์ด๋๋ฉด ์ข์ง๋ ์๊ฒ ๋ค.
์ธํฐํ์ด์ค ๋ถ๋ฆฌ
ํฐ ์ธํฐํ์ด์ค๊ฐ ๋ช ๊ฐ ์๋ ๊ฒ๋ณด๋ค๋ ์์ ์ธํฐํ์ด์ค๊ฐ ๋ง์ด ์๋๊ฒ ์ข๋ค.
- ์ฌ์ ํ ์ดํดํ ์ ์๋ ์ ๋ณด์ ํฌ๊ธฐ์ ๋ฌธ์ ๋ค.
- ์์ ๋จ์๋ก ์ชผ๊ฐค ์ ์์ผ๋ฉด ์ชผ๊ฐ๋๊ฒ ๋ณดํต ์ดํดํ๊ธฐ ์ฝ๋ค.
- ์ญ์ ๋ฐธ๋ฐ์ค์ ๋ฌธ์ ๋ค.
์์กด ์ญ์
- ๊ฐ์ฒด๋ผ์ง ํต์ ํ ๋ ๊ตฌ์ฒด์ ์ธ ๊ฒ ๋ง๊ณ ์ถ์์ ์ธ ๊ฒ์ ์์กดํด๋ผ
- ๊ทธ๋ผ ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋๋ ํด๋ผ์ด์ธํธ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ ๊ฒฝ์ฐ๋ ์ ๋ค.
์ ๋ฆฌ: ์ํํธ์จ์ด ํ์ง
- ์ํํธ์จ์ด ํ์ง์ ์์์ ๊ฐ๋ฐ์์ ์ค์๋ฅผ ์ค์ด๋ ํ๊ฒฝ ๊ตฌ์ถ
- ๋ชจ๋๊ฐ ์ดํดํ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํ ๊ฒ
- ๋์ปคํ๋ง ๊ณ ๋ ค ์์
- ํ์ ํ๊ฒฝ์์ ์ฆ์ ๋ณ๊ฒฝ์ผ๋ก ์๋ก ์ผ ๋ชปํ๋ ์ํฉ์ด ์๊ธธ ๋
- SOLID๊ฐ ๋์๋จ
- ํ์ํ๋ฉด ์ฌ์ฉํ๋ค!
- ๊ตณ์ด ํ์์๋ ๊ฑธ ๊ตณ์ด ํ๋ ๊ฑด ๋ฏผํ
- ์๋กญ๊ณ ๋๋จํด๋ณด์ด๋ฉด ์์ฌํด๋ณด์.