์ด๋ฒ์ ์ฐํ ์ฝ ํ๋ฆฌ์ฝ์ค ์งํํ๋ฉด์ ์๊ฒ ๋ ๊ฐ์ฑ์งํฅ ์ค๊ณ์ 5์์น์ด๋ค!
์์ผ๋ก SOLID๋ฅผ ์ ์ง์ผ๊ฐ๋ฉด์ ํ๋ก๊ทธ๋๋ฐ์ ํด๋ณด์์ผ๊ฒ ๋ค
์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ์์ SOLID๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ๋ฐ ์ค๊ณ์ ๋ค์ฏ ๊ฐ์ง ๊ธฐ๋ณธ ์์น์ ์๊ฐํ ๊ฒ์ด๋ค.
ํ๋ก๊ทธ๋๋จธ๊ฐ ์๊ฐ์ด ์ง๋๋ ์ ์ง ๋ณด์์ ํ์ฅ์ด ์ฌ์ด ์์คํ ์ ๋ง๋ค๊ณ ์ ํ ๋ ์ด ์์น๋ค์ ํจ๊ป ์ ์ฉํ ์ ์๋ค.
SOLID ์์น๋ค์ ์ํํธ์จ์ด ์์ ์์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ค ์ฝ๋๊ฐ ์ฝ๊ธฐ ์ฝ๊ณ ํ์ฅํ๊ธฐ ์ฝ๊ฒ ๋ ๋๊น์ง ์ํํธ์จ์ด ์์ค ์ฝ๋๋ฅผ ๋ฆฌํฉํฐ๋งํ์ฌ code smell(์ฝ๋์์ ๋ ์ฌ์คํ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ๊ฐ๋ฅ์ฑ์ด ์๋ ํน์ง)์ ์ ๊ฑฐํ๊ธฐ ์ํด ์ ์ฉํ ์ ์๋ค.
์ด ์์น๋ค์ ์ ์์ผ ์ํํธ์จ์ด ๊ฐ๋ฐ๊ณผ ์ ์์ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ ๋ฐ์ ์ ๋ต์ ์ผ๋ถ์ด๋ค.
์ถ์ฒ ์ํค๋ฐฑ๊ณผ
๊ฐ์ฒด์งํฅ์ค๊ณ์ 5์์น (SOLID)
SRP | ๋จ์ผ ์ฑ
์ ์์น (Single responsibility principle) -> ํ ํด๋์ค๋ ํ๋์ ์ฑ ์๋ง ๊ฐ์ ธ์ผ ํ๋ค. |
OCP | ๊ฐ๋ฐฉ-ํ์ ์์น (Open/closed principle) -> “์ํํธ์จ์ด ์์๋ ํ์ฅ์๋ ์ด๋ ค ์์ผ๋ ๋ณ๊ฒฝ์๋ ๋ซํ ์์ด์ผ ํ๋ค.” |
LSP | ๋ฆฌ์ค์ฝํ ์นํ ์์น (Liskov substitution principle) -> “ํ๋ก๊ทธ๋จ์ ๊ฐ์ฒด๋ ํ๋ก๊ทธ๋จ์ ์ ํ์ฑ์ ๊นจ๋จ๋ฆฌ์ง ์์ผ๋ฉด์ ํ์ ํ์ ์ ์ธ์คํด์ค๋ก ๋ฐ๊ฟ ์ ์์ด์ผ ํ๋ค.” ๊ณ์ฝ์ ์ํ ์ค๊ณ๋ฅผ ์ฐธ๊ณ ํ๋ผ. |
ISP | ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น (Interface segregation principle) -> “ํน์ ํด๋ผ์ด์ธํธ๋ฅผ ์ํ ์ธํฐํ์ด์ค ์ฌ๋ฌ ๊ฐ๊ฐ ๋ฒ์ฉ ์ธํฐํ์ด์ค ํ๋๋ณด๋ค ๋ซ๋ค.” |
DIP | ์์กด๊ด๊ณ ์ญ์ ์์น (Dependency inversion principle) -> ํ๋ก๊ทธ๋๋จธ๋ “์ถ์ํ์ ์์กดํด์ผ์ง, ๊ตฌ์ฒดํ์ ์์กดํ๋ฉด ์๋๋ค.” ์์กด์ฑ ์ฃผ์ ์ ์ด ์์น์ ๋ฐ๋ฅด๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ค. |
๊ฐ์ฒด์งํฅ์ ํต์ฌ์ ๋คํ์ฑ์ด์ง๋ง ๋คํ์ฑ๋ง์ผ๋ก๋ ์๋ฒฝํ ๊ฐ์ฒด์งํฅ์ ์ฝ๋๋ฅผ ๊ตฌํํ ์ ์๋ค.
๋ฐ๋ผ์ SOLID ์์น์ ์ ์ ํ ์ ์ฌ์ฉํ์ฌ ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ๊ณ ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ๊ฐ๋ฐํ๋ ๊ฒ์ด ์ข๋ค.
๊ทธ๋ฆฌ๊ณ ๋๋ ์ผ๋จ ๋จผ์ ๊ธฐ๋ฅ๊ตฌํ์ ํ๋ ๊ฒ์ ์ฐ์ ์ด์ ๋ชฉํ๋ก ์ผ์์ผ ํ๋ค! ๊ทธ๋์ผ ์งํ์ ํ์ง...ํ์ดํ
'๐ฉโ๐ป ๊ฐ๋ฐ ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] Movie App ๋ง๋ค๊ธฐ (๊ฐ์ธ ํ๋ก์ ํธ) - 1 (0) | 2023.02.20 |
---|---|
[React] Attempted import error: does not contain a default export (0) | 2023.02.20 |
[Git] local ๋ด์ฉ ๋ ์๊ฐ๋ ๊ด์ฐฎ์ ๋ ๊ฐ์ pull ํ๊ธฐ (1) | 2022.11.27 |
[JS] ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ์ด ๊ฐ์ข ์ ๋ฆฌ (0) | 2022.10.20 |
[C++/Game] Google Dino ๊ฒ์ ๋ง๋ค๊ธฐ (0) | 2022.07.25 |