๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ‘ฉ‍๐Ÿ’ป ๊ฐœ๋ฐœ ๊ณต๋ถ€

[๊ฐ์ฒด์ง€ํ–ฅ์„ค๊ณ„ 5์›์น™] About SOLID principle

์ด๋ฒˆ์— ์šฐํ…Œ์ฝ” ํ”„๋ฆฌ์ฝ”์Šค ์ง„ํ–‰ํ•˜๋ฉด์„œ ์•Œ๊ฒŒ ๋œ ๊ฐ์ฑ„์ง€ํ–ฅ ์„ค๊ณ„์˜ 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 ์›์น™์„ ์ ์ ˆํžˆ ์ž˜ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜๊ณ  ํšจ์œจ์ ์ธ ์ฝ”๋“œ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์ผ๋‹จ ๋จผ์ € ๊ธฐ๋Šฅ๊ตฌํ˜„์„ ํ•˜๋Š” ๊ฒƒ์„ ์šฐ์„ ์ด์ž ๋ชฉํ‘œ๋กœ ์‚ผ์•„์•ผ ํ•œ๋‹ค! ๊ทธ๋ž˜์•ผ ์ง„ํ–‰์„ ํ•˜์ง€...ํ™”์ดํŒ