Principle
Principle์ด๋
์ด๋ค ์ฌ๋ฌผ์ด๋ ํ์์ ๊ทผ๊ฑฐ๊ฐ ๋๋ ๋ณดํธ์ ์ง๋ฆฌ
์ด๋ฏธ ๋ง์ ๊ฒฝํ๊ณผ ์คํ์ ์ํด ์ฆ๋ช ๋์๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ์์์ผ๋ก ์ฆ๋ช ํ ํ์ ์์
Code Principle
์์ ๋จ์์ ์ฝ๋์ ์ ์ฉ๋๋ ํด๋ฆฐ์ฝ๋ ์์น
ํด๋น ์์น๋ค์ ์ฝ๋๋ฅผ ์์ฑํ ๋ ๋ณดํธ์ ์ผ๋ก ์ ์ฉํ ๊ฒฝํ ๋ฒ์น์ด ๋ ์ ์์ง๋ง, ๋ชจ๋ ์ํฉ์์ ๋ฌด์กฐ๊ฑด ๋ฐ๋ผ์ผํ๋ค๋ ์๋, ํญ์ ์ด์ (why)๋ฅผ ์๊ฐํ๋ฉด์ ์ธ์ ์์น์ ์งํค์ง ์์๋ ๋๋์ง ์๊ฐํ๋ ๊ฒ์ด ๋ ์ค์
KISS (Keep It Simple, Stupid)
๋ฐ๋ณด์ฒ๋ผ ๋จ์ํ๊ฒ, ์ฆ ๋ถํ์ํ ๋ณต์ก์ฑ์ ์ค์ด๊ณ ์ต๋ํ ๋จ์ํ๊ณ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค์ด๋ผ
๋ณต์ก์ฑ, ์๋ ๋น์ฉ ์ธก๋ฉด์์ ๊ฐ์ฅ ๋จ์ํ ๋ฐฉ๋ฒ์ด ๊ฐ์ฅ ์ข์ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค๋ ๊ฒ์ ์๋ฏธ
๋จ์์ฑ์ด๋ ์ต์ํ์ ๋ถํ์ผ๋ก ๋ถํ ๊ฐ์ ์ํธ ์์ฉ์ ์ต์ํํ๋ ๊ฒ์ ์๋ฏธ
DRY (Don't Repeat Yourself)
๊ฐ์ ์ผ์ ๋ฐ๋ณตํด์ ํ์ง๋ง๋ผ
๋ฐ๋ณต๋๋ ๊ธฐ๋ฅ์ด๋ ๊ฐ์ฒด๋ฅผ ํ๋๋ก ๋ง๋ค์ด ๊ด๋ฆฌํจ์ผ๋ก์จ ๋ณ๊ฒฝ์ฌํญ์ด ์๊ธธ ๋ ์ฐ์์ ์ผ๋ก ์ ํ๋๋๊ฒ์ ๋ฐฉ์งํ๋ค.
์ฝ๋์ ํ์์ด ๋น์ทํ์ง๋ง ์ฝ๋์ ๋ชฉ์ ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ๋ ๋ถ๋ฆฌํด์ผ ํ๋ค.
์ฆ, ๋ณ๊ฒฝ์ฌํญ์ด ์๊ธธ ๋ ๊ฐ์ ์ด์ ๋ก ๋ณ๊ฒฝ์ด ๋์ด์ผํ๋ค.
YAGNI (You Ain't Gonna Need It)
์ผ! ๊ทธ๊ฑฐ ์์ง ํ์์์ด!
ํ์ฌ ํด๊ฒฐํ ํ์๊ฐ ์๋ ์ํฉ์ด๋, ์๊ตฌ์ฌํญ์ ํด๊ฒฐํ๊ธฐ ์ํ ์๋ฃจ์ ์ ์ค๋ฒ ์์ง๋์ด๋ง์ ๋ฐฉ์งํ๋๋ฐ ์์ฃผ ์ฌ์ฉ๋๋ค.
ํ์ฌ ํ์ํ์ง ์๋ ๊ธฐ๋ฅ โ
ํ์ฌ ์ฌ์ฉํ์ง ์๋ ๊ธฐ๋ฅ โ
์ง๋์น๊ฒ ๋ฏธ๋ ์งํฅ์ โ
Leblance's Law (๋ฅด๋ธ๋ ๋ฒ์น)
Later equals never ๋์ค์ ๊ฒฐ์ฝ ์ค์ง ์๋๋ค.
ํ๋ฒ ์์ฑํ ์ฐ๋ ๊ธฐ ์ฝ๋๋ฅผ ๋์ค์ ์์ ํ๋ ์ผ์ ๊ฒฐ์ฝ ์๋ค
SOLID
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ ๋ ํ์ฅ์ฑ, ์ ์ง๋ณด์์ฑ, ์ ์ฐ์ฑ์ ์ํ 5๊ฐ์ง ์์น์ ์ ๊ธ์๋ง ๋ฐ์ ๋ช ๋ช ํ ์์น
"Uncle Bob" ์ด๋ผ ๋ถ๋ฆฌ๋ Robert C. Martin.์ ์ํด ๋๋ฆฌ ์๋ ค์ง๊ฒ ๋จ
SRP (Single Reponsibility Principle)
๋จ์ผ ์ฑ ์ ์์น - ๊ฐ ํด๋์ค๋ ํ๋์ ์ฑ ์๋ง์ ๊ฐ์ง๊ฒ ๋ง๋ค์ด์ผ ๋๋ค.
์ฌ๋ฌ ์ฑ ์์ ๊ฐ๊ณ ์์ ๋, ํ๋์ ๋์์ด ๋ณ๊ฒฝ์ด ๋๋ฉด ๋ค๋ฅธ ๋์์ ์ํฅ์ ๋ผ์ณ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ํ๋ฅ ์ด ๋์ด๋๊ฒ ๋จ
๋จ์ผ ์ฑ ์ ์์น์ ๊ฐ ์ฑ ์์ ๋ถ๋ฆฌํ์ฌ ๋์์ด ๋ณ๊ฒฝ๋์์ ๋ ๋ค๋ฅธ ๋์์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ํ๋๊ฒ์ ๋ชฉํ๋ก ํจ
OCP (Open Closed Principle)
๊ฐ๋ฐฉ ํ์ ์์น - ํด๋์ค๋ ํ์ฅ์๋ ์ด๋ ค ์๊ณ ๋ณ๊ฒฝ์๋ ๋ซํ ์์ด์ผ ํ๋ค
ํด๋์ค์ ๋์์ ๋ณ๊ฒฝํ๋ฉด ํด๋น ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ๊ณณ์ ์ํฅ์ ๋ฏธ์น๊ฒ ๋๋ค.
๊ฐ๋ฐฉ ํ์ ์์น์ ํด๋์ค๊ฐ ์ฌ์ฉ๋๋ ๋ชจ๋ ๊ณณ์์ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ์ง ์๋๋ก, ๊ธฐ์กด ๋์์ ๋ณ๊ฒฝํ์ง ์๊ณ ํ์ฅํ๋ ๊ฒ์ ๋ชฉํ๋ก ํจ
LSP (Liskov Substitution Principle)
๋ฆฌ์ค์ฝํ ์นํ ์์น - ์ธํฐํ์ด์ค์ ์๋ธํ์ดํ์ ์ธํฐํ์ด์ค์ ์ ์๋ ํํ๋ฅผ ์ต๋ํ ์ ์งํด์ผ ํ๋ค ์ฆ, ์์ ํด๋์ค๋ ๋ถ๋ชจ ํด๋์ค์ ๋์ผํ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ๋์ผํ ์ ํ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํด์ผ ํ๋ค.
๋ฆฌ์ค์ฝํ ์นํ ์์น์ ์์ํด๋์ค์ ๋ถ๋ชจํด๋์ค๊ฐ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋ ์ ์๋๋ก ์ผ๊ด์ฑ์ ์งํค๋ ๊ฒ์ ๋ชฉํ๋ก ํจ
ISP (Interface Segregation Principle)
์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น - ์ธํฐํ์ด์ค๋ ์ต์ํ์ ๋ฉ์๋๋ง์ผ๋ก ์ ์งํด์ผ ํ๋ค.
ํด๋์ค๋ ์์ ์ ์ญํ ์ ์ํํ ์ก์ ๋ง์ ์ํํด์ผ ํ๋ค.
์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น์ ํฐ ์ธํฐํ์ด์ค๋ฅผ ์์ ์ธํฐํ์ด์ค๋ก ๋ถ๋ฆฌํ์ฌ ํด๋์ค๊ฐ ํด๋ผ์ด์ธํธ๊ฐ ํ์๋ก ํ๋ ์ธํฐํ์ด์ค๋ง์ ์ ๊ณตํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋ชฉํ๋กํจ
DIP (Dependency Inversion Principle)
์์กด ๊ด๊ณ ์ญ์ ์์น - ์์ ๋ ๋ฒจ์ ๋ชจ๋์ ํ์ ๋ ๋ฒจ์ ๋ชจ๋์ ์์กดํด์๋ ์๋๋ค. ๋๋ค ์ถ์ํ์ ์์กดํด์ผ ํจ
ํ์ ๋ ๋ฒจ ๋ชจ๋(๋๊ตฌ)๋ ๋ถ๋ฆฌํ์ฌ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๊ด๋ฆฌ ๋์ด์ผ ํ๋ค.
์ฃฝ, ํด๋์ค์ ์ธํฐํ์ด์ค ๋ชจ๋ ๋๊ตฌ์ ์๋ ๋ฐฉ์์ ์ ์ ์์ด์ผ ํ๋ค
์์กด ๊ด๊ณ ์ญ์ ์์น์ ์ธํฐํ์ด์ค๋ฅผ ํตํด ํ์ ๋ ๋ฒจ์ ๋ชจ๋์ ๋ํ ์์ ๋ ๋ฒจ์ ๋ชจ๋์ ์์กด์ฑ์ ๋ฎ์ถ๋ ๊ฒ์ ๋ชฉํ๋ก ํจ
์์ ๋ ๋ฒจ ๋ชจ๋(๊ณ ์์ค) โ ๋๊ตฌ๋ก ์ก์ ์ ์คํํ๋ ๋ชจ๋
ํ์ ๋ ๋ฒจ ๋ชจ๋(์ ์์ค) โ ์์ ์ ์คํํ๋๋ฐ ํ์ํ ๋๊ตฌ
Last updated