SOLID ์„ค๊ณ„ ์ •์‹ ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

SOLID ์ •์‹ ์œผ๋กœ ์ด๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ

  • ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„๋ฅผ โ€œ์œ ์—ฐํ•˜๊ฒŒโ€ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์œ ์—ฐํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„, ์ฆ‰ ์ถ”์ƒ์ ์ธ ์„ค๊ณ„๋กœ ์ปคํ”Œ๋ง์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹ค๋งŒ, ์ถ”์ƒ์ ์œผ๋กœ ๋  ์ˆ˜๋ก ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง€๋Š” ์ธก๋ฉด์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ง€๋ณด์ˆ˜ ์ธก๋ฉด์—์„œ ์•…์˜ํ–ฅ์„ ์ค„ ๊ฐ€๋Šฅ์„ฑ๋„ ์žˆ๋‹ค.

๋„์›€์ด ๋ ๋งŒํ•œ ๊ณณ

  • ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ
  • ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋Š” ๋ง์ž.
  • ์ง์ ‘์ /๊ตฌ์ฒด์ ์ธ ๊ฒƒ์ด ๋” ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค.
  • ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๋ฉด์„œ ์œ ์—ฐ์„ฑ์ด ํ•„์š”ํ•ด์ง€๋Š” ์‹œ์ ์— ๋„์›€์ด ๋  ๊ฒƒ์ด๋‹ค.
  • ์˜ˆ์ „์—๋Š” ์™ธ์ฃผ ๊ฐœ๋ฐœ์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์œ ์—ฐ์„ฑ์ด ์ค‘์š”ํ–ˆ๋‹ค.
    • ์ฆ‰, ์˜ˆ์ „์—๋Š” SOLID๊ฐ€ ๋” ๋ง์ด ๋์—ˆ๋‹ค.
    • ๊ณ„์•ฝ์‹œ ์ŠคํŽ™์— ๋”ฐ๋ผ ๊ธˆ์•ก์„ ์‚ฐ์ •ํ–ˆ์—ˆ๋‹ค.
    • ์š”์ฆ˜์€ ์ž‘์€ ์š”๊ตฌ์‚ฌํ•ญ, ์žฆ์€ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋•Œ๋ฌธ์— ์žฌ์‚ฌ์šฉ์„ฑ ๋†’์€ ์„ค๊ณ„๊ฐ€ ๋„์›€์ด ์•ˆ๋  ์ˆ˜ ์žˆ๋‹ค.

๋‹จ์ผ ์ฑ…์ž„

Only do one thing, One reason to change

  • ํด๋ž˜์Šค์˜ ์กด์žฌ ์ด์œ ๋Š” ํ•˜๋‚˜์—ฌ์•ผ๋งŒ ํ•œ๋‹ค.
  • ํ•œ ํ•จ์ˆ˜์—์„œ ๋„ˆ๋ฌด ๋งŽ์€ ์ผ์„ ํ•˜์ง€๋ง๋ผ > ํ™•์žฅ
  • ๊ทธ๋Ÿฐ๋ฐ ํ•˜๋‚˜๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ์ •ํ™•ํžˆ ๋ฌด์—‡์ผ๊นŒ?
  • ํ•˜๋‚˜์˜ ๊ฐœ๋…์ด ๋งค์šฐ ์ฃผ๊ด€์ ์ด๋‹ค.
  • ์ด๋Š” ๊ฒฐ๊ตญ ๊ฐ€๋…์„ฑ๊ณผ ๊ด€๋ จ๋œ ์ด์•ผ๊ธฐ๋‹ค.
  • ์‚ฌ๋žŒ์ด ํ•œ๋ฒˆ์— ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด์˜ ํฌ๊ธฐ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋‹ค.

๋‹จ์ผ ์ฑ…์ž„ ์ •์‹ ์˜ ์˜์˜

  • ์ด ์ฝ”๋“œ๋ฅผ ๋ณด๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ํฌ๊ธฐ๋กœ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์ž.
  • ๊ฐ๊ด€์ ์œผ๋กœ ๋งŒ๋“ค๊ฒ ๋‹ค๊ณ  ๋ฉ”์„œ๋“œ ๊ฐœ์ˆ˜ ์ œํ•œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์„ ์ •ํ•˜์ง€ ๋ง์ž.
    • ์งง์•„๋„ ์•ˆ ์ฝํžˆ๋Š” ๊ธ€์ด ์žˆ๊ณ , ๊ธธ์–ด๋„ ์ž˜ ์ฝํžˆ๋Š” ๊ธ€์ด ์žˆ๋‹ค.
  • ์ด๊ฑด ์‚ฌ์‹ค ํ•จ๊ป˜ ์ผํ•˜๋Š” ํŒ€์—์„œ ์ •ํ•ด์•ผํ•˜๋Š” ๋ถ€๋ถ„์ž„

๋‹จ์ผ ์ฑ…์ž„ ์ •์‹ ์„ ์–ด๊ฒผ์Œ์„ ๋ณด์—ฌ์ฃผ๋Š” ์ง€ํ‘œ

  • ํด๋ž˜์Šค ์ด๋ฆ„์— And๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฒฝ์šฐ
  • ์ด๊ฑด ๋ฉ”์„œ๋“œ ์ด๋ฆ„์—๋„ ์ ์šฉ๋จ

๊ฐœ๋ฐฉ-ํ์‡„

Open for extension, Closed for modification

  • ํด๋ž˜์Šค ๋‚ด๋ถ€ ์ˆ˜์ •์—†์ด ๋™์ž‘์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • Switch, if ๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ํŠน์ • ๊ฐ์ฒด๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ์–ด๊ธ‹๋‚œ ์˜ˆ
  • ์ƒ์† + ๋‹คํ˜•์„ฑ์„ ์‚ฌ์šฉํ•˜์ž๋Š” ๋ง
  • ์ด๊ฑธ ์ž˜ ์ ์šฉํ•˜๋ฉด ๋‹จ์ผ ์ฑ…์ž„ ์ •์‹ ๋„ ์ด๋ฃฐ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

๊ทน๋‹จ์ ์ธ ์ฃผ์žฅ

  • ํ•œ๋ฒˆ ๋งŒ๋“  ํด๋ž˜์Šค๋Š” ์ ˆ๋Œ€๋กœ ๋ฐ”๊พธ๋ฉด ์•ˆ๋จ
    • ๋ฐฉํ–ฅ์„ฑ ์ž์ฒด๋Š” ์ข‹๋‹ค.
    • ํ•˜์ง€๋งŒ ๋ฐ”๊ฟ”์•ผ ํ•˜๋Š” ์ƒํ™ฉ๋„ ์ถฉ๋ถ„ํžˆ ๋งŽ๋‹ค.
    • ๋ฐ”๊พธ๋Š”๊ฒŒ ์œ ์ง€๋ณด์ˆ˜์— ๋” ์ข‹์„ ์ˆ˜๋„
      • breaking change (ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ •์‚ฌํ•ญ)
  • ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ํ’€์ง€ ๋ง์ž.
    • git๊ณผ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์˜ˆ์ „์— ์‚ฌ์šฉํ–ˆ๋˜ ํด๋ž˜์Šค ์ง€์›Œ๋„ ๋ณต๊ตฌ ๊ฐ€๋Šฅํ•จ

๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜

  • ์ž์‹ ๊ฐœ์ฒด๋ฅผ ๋ถ€๋ชจ ๊ฐœ์ฒด๋กœ ๋Œ€์ฒดํ•˜๋”๋ผ๋„ ๋™์ž‘ํ•ด์•ผ ํ•œ๋‹ค.
  • ์ฆ‰, ๋ถ€๋ชจ๊ฐ€ ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์ผ์€ ์ž์‹๋„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

ํ•œ๊ณ„

  • ๋งค์šฐ ๋งž๋Š” ๋ง์ด์ง€๋งŒ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ชจ๋“  ์ž์‹์„ ์ถ”์ƒํ™”ํ•œ ๊ฒƒ์ด ๋ถ€๋ชจ๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ทธ๋Ÿฐ๋ฐ, ์ž์‹์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ถ€๋ชจ์˜ ๋™์ž‘์„ ๋ฐ”๊ฟ”์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์ฆ‰, ์ถ”์ƒํ™”๋œ ๋ถ€๋ชจ๊ฐ€ ํ•ญ์ƒ ๋งž์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋‹ค.
  • ์ถ”์ƒํ™”๋Š” ๊ตฌ์ฒด์ ์ธ ๊ฒƒ๋“ค์˜ ๊ณตํ†ต์ ์„ ๋ชจ์•„์„œ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.
  • ๋งŒ์•ฝ ๊ตฌ์ฒด์ ์ธ ๊ฐœ์ฒด๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค๋ฉด, ์ด ๋ชจ๋“  ๊ฒƒ์˜ ๊ณตํ†ต์ ์„ ์ฐพ์•„ ๋ถ€๋ชจ๋ฅผ ๊ณ ์ณ์ฃผ์–ด์•ผ ํ•˜๋Š”๊ฒŒ ์ž๋ช…ํ•˜๋‹ค.
  • ๋‹ค๋งŒ ์ด๊ฒŒ ์ž์ฃผ ์ผ์–ด๋‚˜๋ฉด ์ข‹์ง€๋Š” ์•Š๊ฒ ๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ

ํฐ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋ช‡ ๊ฐœ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ์ž‘์€ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๋งŽ์ด ์žˆ๋Š”๊ฒŒ ์ข‹๋‹ค.

  • ์—ฌ์ „ํžˆ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด์˜ ํฌ๊ธฐ์˜ ๋ฌธ์ œ๋‹ค.
  • ์ž‘์€ ๋‹จ์œ„๋กœ ์ชผ๊ฐค ์ˆ˜ ์žˆ์œผ๋ฉด ์ชผ๊ฐœ๋Š”๊ฒŒ ๋ณดํ†ต ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค.
  • ์—ญ์‹œ ๋ฐธ๋Ÿฐ์Šค์˜ ๋ฌธ์ œ๋‹ค.

์˜์กด ์—ญ์ „

  • ๊ฐœ์ฒด๋ผ์ง€ ํ†ต์‹ ํ•  ๋•Œ ๊ตฌ์ฒด์ ์ธ ๊ฒƒ ๋ง๊ณ  ์ถ”์ƒ์ ์ธ ๊ฒƒ์— ์˜์กดํ•ด๋ผ
  • ๊ทธ๋Ÿผ ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋„ ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ๊ฒฝ์šฐ๋Š” ์ ๋‹ค.

์ •๋ฆฌ: ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ

  • ์†Œํ”„ํŠธ์›จ์–ด ํ’ˆ์งˆ์˜ ์‹œ์ž‘์€ ๊ฐœ๋ฐœ์ž์˜ ์‹ค์ˆ˜๋ฅผ ์ค„์ด๋Š” ํ™˜๊ฒฝ ๊ตฌ์ถ•
  • ๋ชจ๋‘๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๊ฒƒ
  • ๋””์ปคํ”Œ๋ง ๊ณ ๋ ค ์‹œ์ 
    • ํ˜‘์—… ํ™˜๊ฒฝ์—์„œ ์žฆ์€ ๋ณ€๊ฒฝ์œผ๋กœ ์„œ๋กœ ์ผ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์ด ์ƒ๊ธธ ๋•Œ
    • SOLID๊ฐ€ ๋„์›€๋จ
  • ํ•„์š”ํ•˜๋ฉด ์‚ฌ์šฉํ•œ๋‹ค!
    • ๊ตณ์ด ํ•„์š”์—†๋Š” ๊ฑธ ๊ตณ์ด ํ•˜๋Š” ๊ฑด ๋ฏผํ
    • ์ƒˆ๋กญ๊ณ  ๋Œ€๋‹จํ•ด๋ณด์ด๋ฉด ์˜์‹ฌํ•ด๋ณด์ž.

Reference