DAY 20 & 21

๐Ÿ”– ์˜ค๋Š˜ ์ฝ์€ ๋ฒ”์œ„: 10์žฅ, ํด๋ž˜์Šค

๐Ÿ˜ƒ ์ฑ…์—์„œ ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ์„ ์จ๋ณด์„ธ์š”.

๊นจ๋—ํ•œ ํด๋ž˜์Šค

ํด๋ž˜์Šค์ฒด๊ณ„

์ž๋ฐ” ๊ด€๋ก€์— ๋”ฐ๋ฅด๋ฉด, ๊ฐ€์žฅ ๋จผ์ € ๋ณ€์ˆ˜ ๋ชฉ๋ก์ด ๋‚˜์˜จ๋‹ค. ์ •์  ๊ณต๊ฐœ ์ƒ์ˆ˜, ์ •์  ๋น„๊ณต๊ฐœ ๋ณ€์ˆ˜, ๋น„๊ณต๊ฐœ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ ์ˆœ์„œ์ด๋‹ค.

  • ์บก์Šํ™”

    ์บก์Šํ™” ๋ž€: ๊ด€๋ จ์ด ์žˆ๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋กœ ๋ฌถ๊ณ  ์™ธ๋ถ€์—์„œ ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์€๋‹‰ํ•˜๋Š” ๊ฒƒ.

    ๊ทธ๋Ÿฌ๋‚˜ ์ €์ž์— ๋”ฐ๋ฅด๋ฉด ์บก์Šํ™”๋ฅผ ํ’€์–ด์ฃผ๋Š” ๊ฒƒ์€ ์–ธ์ œ๋‚˜ ์ตœํ›„์˜ ์ˆ˜๋‹จ์ด๋‹ค.

ํด๋ž˜์Šค๋Š” ์ž‘์•„์•ผ ํ•œ๋‹ค!

  • ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ์ฒซ๋ฒˆ์งธ ๊ทœ์น™์€ ํฌ๊ธฐ๋‹ค. ํด๋ž˜์Šค๋Š” ์ž‘์•„์•ผ ํ•œ๋‹ค. ๋‘ ๋ฒˆ์งธ ๊ทœ์น™๋„ ํฌ๊ธฐ๋‹ค. ๋” ์ž‘์•„์•ผ ํ•œ๋‹ค.
  • ํด๋ž˜์Šค ์ด๋ฆ„์€ ํ•ด๋‹น ํด๋ž˜์Šค ์ฑ…์ž„์„ ๊ธฐ์ˆ ํ•ด์•ผ ํ•œ๋‹ค.
  • ๊ฐ„๊ฒฐํ•œ ์ด๋ฆ„์ด ๋– ์˜ค๋ฅด์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ•„๊ฒฝ ํด๋ž˜์Šค ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ํฌ๊ณ  ์ฑ…์ž„์ด ๋„ˆ๋ฌด ๋งŽ์•„์„œ ์ด๋‹ค.
  • ๋‹จ์ผ ์ฑ…์ž„ ์›์น™(Single Resonpsibility Principle, SRP)

    • ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์€ ํด๋ž˜์Šค๋‚˜ ๋ชจ๋“ˆ์„ ๋ณ€๊ฒฝํ•  ์ด์œ ๊ฐ€ ํ•˜๋‚˜, ๋‹จ ํ•˜๋‚˜๋ฟ์ด์–ด์•ผ ํ•œ๋‹ค๋Š” ์›์น™์ด๋‹ค.
  • ์‘์ง‘๋„(Cohesion)

    • ์ผ๋ฐ˜์ ์œผ๋กœ ๋งค์„œ๋“œ๊ฐ€ ๋ณ€์ˆ˜๋ฅผ ๋” ๋งŽ์ด ์‚ฌ์šฉํ• ์ˆ˜๋ก ๋ฉ”์„œ๋“œ์™€ ํด๋ž˜์Šค๋Š” ์‘์ง‘๋„๊ฐ€ ๋” ๋†’๋‹ค.
    • ์šฐ๋ฆฌ๋Š” ์‘์ง‘๋„ ๋†’์€ ํด๋ž˜์Šค๋ฅผ ์„ ํ˜ธํ•œ๋‹ค. ์‘์ง‘๋„๊ฐ€ ๋†’๋‹ค๋Š” ๋ง์€ ํด๋ž˜์Šค์— ์†ํ•œ ๋ฉ”์„œ๋“œ์™€ ๋ณ€์ˆ˜๊ฐ€ ์„œ๋กœ ์˜์กดํ•˜๋ฉฐ ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„๋กœ ๋ฌถ์ธ๋‹ค๋Š” ์˜๋ฏธ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
    • ์‘์ง‘๋„๊ฐ€ ๋†’์•„์ง€๋„๋ก ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ ์ ˆํžˆ ๋ถ„๋ฆฌํ•ด ์ƒˆ๋กœ์šด ํด๋ž˜์Šค ๋‘์„ธ ๊ฐœ๋กœ ์ชผ๊ฐœ์ค€๋‹ค.

์‘์ง‘๋„๋ฅผ ์œ ์ง€ํ•˜๋ฉด ์ž‘์€ ํด๋ž˜์Šค ์—ฌ๋Ÿฟ์ด ๋‚˜์˜จ๋‹ค

ํด๋ž˜์Šค๊ฐ€ ์‘์ง‘๋ ฅ์„ ์žƒ๋Š”๋‹ค๋ฉด ์ชผ๊ฐœ๋ผ!

๋ณ€๊ฒฝํ•˜๊ธฐ ์‰ฌ์šด ํด๋ž˜์Šค

  • ๋ณ€๊ฒฝ์œผ๋กœ๋ถ€ํ„ฐ์˜ ๊ถŒ๋ฆฌ
    • ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž…๋ฌธ์—์„œ ์šฐ๋ฆฌ๋Š” ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค(concrete)์™€ ์ถ”์ƒ ํด๋ž˜์Šค(abstract)๊ฐ€ ์žˆ๋‹ค๊ณ  ๋ฐฐ์› ๋‹ค. ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค๋Š” ์ƒ์„ธํ•œ ๊ตฌํ˜„(์ฝ”๋“œ)๋ฅผ ํฌํ•จํ•˜๋ฉฐ ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ๊ฐœ๋…๋งŒ ํฌํ•จํ•œ๋‹ค๊ณ ๋„ ๋ฐฐ์› ๋‹ค.
    • ์ƒ์„ธํ•œ ๊ตฌํ˜„์— ์˜์กดํ•˜๋Š” ์ฝ”๋“œ๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋ ต๋‹ค. 5๋ถ„๋งˆ๋‹ค ๊ฐ’์ด ๋‹ฌ๋ผ์ง€๋Š” API๋กœ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์งœ๊ธฐ๋ž€ ์‰ฝ์ง€ ์•Š๋‹ค.
    • API๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” ๋Œ€์‹  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ๋ฉ”์„œ๋“œ ํ•˜๋‚˜๋ฅผ ์„ ์–ธํ•œ๋‹ค. ๋‹ค์Œ์œผ๋กœ ๊ทธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. ์ด์ œ ์ด ํด๋ž˜์Šค๋ฅผ ํ‰๋‚ด๋‚ด๋Š” ํ…Œ์ŠคํŠธ์šฉ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ํ…Œ์ŠคํŠธ์šฉ ํด๋ž˜์Šค๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ ๊ณ ์ •๋œ ์ฃผ๊ฐ€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์šฐ๋ฆฌ ํ…Œ์ŠคํŠธ์šฉ ํด๋ž˜์Šค๋Š” ๋‹จ์ˆœํžˆ ๋ฏธ๋ฆฌ ์ •ํ•ด๋†“์€ ํ‘œ ๊ฐ’๋งŒ ์ฐธ์กฐํ•œ๋‹ค.
  • ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ๋‹ค๋Š” ์†Œ๋ฆฌ๋Š” ๊ฐ ์‹œ์Šคํ…œ ์š”์†Œ๊ฐ€ ๋‹ค๋ฅธ ์š”์†Œ๋กœ๋ถ€ํ„ฐ ๊ทธ๋ฆฌ๊ณ  ๋ณ€๊ฒฝ์œผ๋กœ๋ถ€ํ„ฐ ์ž˜ ๊ฒฉ๋ฆฌ๋˜์–ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ๊ฒฐํ•ฉ๋„๋ฅผ ์ตœ์†Œ๋กœ ์ค„์ด๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋˜ ๋‹ค๋ฅธ ํด๋ž˜์Šค ์„ค๊ณ„ ์›์น™์ธ DIP ๋ฅผ ๋”ฐ๋ฅด๋Š” ํด๋ž˜์Šค๊ฐ€ ๋‚˜์˜จ๋‹ค. (Dependency Inversion Principle, ํด๋ž˜์Šค๊ฐ€ ์ƒ์„ธํ•œ ๊ตฌํ˜„์ด ์•„๋‹ˆ๋ผ ์ถ”์ƒํ™”์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค๋Š” ์›์น™์ด๋‹ค.)
  • ์šฐ๋ฆฌ๊ฐ€ ๊ฐœ์„ ํ•œ ํด๋ž˜์Šค๋Š” ์ƒ์„ธํ•œ ๊ตฌํ˜„ ํด๋ž˜์Šค๊ฐ€ ์•„๋‹ˆ๋ผ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์ธํ„ฐํŽ˜์ด์Šค์— ์˜์กดํ•œ๋‹ค.

๐Ÿค” ์˜ค๋Š˜ ์ฝ์€ ์†Œ๊ฐ์€? ๋– ์˜ค๋ฅด๋Š” ์ƒ๊ฐ์„ ๊ฐ€๋ณ๊ฒŒ ์ ์–ด๋ณด์„ธ์š”

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

๐Ÿ”Ž ๊ถ๊ธˆํ•œ ๋‚ด์šฉ์ด ์žˆ๊ฑฐ๋‚˜, ์ž˜ ์ดํ•ด๋˜์ง€ ์•Š๋Š” ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ์ ์–ด๋ณด์„ธ์š”.

x

์†Œ๊ฐ 3์ค„ ์š”์•ฝ

  • ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ์ฒซ๋ฒˆ์งธ ๊ทœ์น™์€ ํฌ๊ธฐ๋‹ค. ํด๋ž˜์Šค๋Š” ์ž‘์•„์•ผ ํ•œ๋‹ค. ๋‘ ๋ฒˆ์งธ ๊ทœ์น™๋„ ํฌ๊ธฐ๋‹ค. ๋” ์ž‘์•„์•ผ ํ•œ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” ์‘์ง‘๋„ ๋†’์€ ํด๋ž˜์Šค๋ฅผ ์„ ํ˜ธํ•œ๋‹ค.
  • ํด๋ž˜์Šค๊ฐ€ ์‘์ง‘๋ ฅ์„ ์žƒ๋Š”๋‹ค๋ฉด ์ชผ๊ฐœ๋ผ!

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2022๋…„ 6์›” 2์ผ

์˜คํ˜ธ~ ์ €๋„ ํด๋ฆฐ์ฝ”๋“œ ์ฑ… ์ฝ์–ด๋ณด๊ณ  ์‹ถ์—ˆ์–ด์š”. ์ด ์ฑ…์„ ์ฝ๊ณ  ์ฝ”๋“œ์—์„œ ๊ฐœ์„ ๋œ ์ ์ด ์žˆ๋‚˜์š”? ๐Ÿคฉ

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ