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