๐Ÿ“•[์ฑ…] ์™์™ ๋“ค์–ด์˜ค๋Š” ํ•จ์ˆ˜ํ˜• ์ฝ”๋”ฉ - 19,20

rivolt0421ยท2023๋…„ 4์›” 3์ผ
0

๐Ÿ“•์ฑ…

๋ชฉ๋ก ๋ณด๊ธฐ
12/26

211p ~ 232p

์š”์•ฝ

๐Ÿ˜‡
์ถ”์ƒํ™” ๋ฒฝ: ํŒจํ„ด ๋ฆฌ๋ทฐ

  • ์ถ”์ƒํ™” ๋ฒฝ์œผ๋กœ ์ถ”์ƒํ™” ๋ฒฝ ์•„๋ž˜ ์žˆ๋Š” ์ฝ”๋“œ์™€ ์œ„์— ์žˆ๋Š” ์ฝ”๋“œ์˜ ์˜์กด์„ฑ์„ ์—†์•จ ์ˆ˜ ์žˆ๋‹ค.
  • ์ถ”์ƒํ™” ๋ฒฝ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ, ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ๊ณ ์น˜๊ธฐ ์œ„ํ•ด ์ถ”์ƒํ™” ๋ฒฝ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํŒ€ ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋น„์šฉ์„ ์ค„์ด๊ณ  ๋ณต์žกํ•œ ์ฝ”๋“œ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

๐Ÿ˜‡
์ž‘์€ ์ธํ„ฐํŽ˜์ด์Šค (minimal interface)

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

๐Ÿ˜‡
์ž‘์€ ์ธํ„ฐํŽ˜์ด์Šค: ํŒจํ„ด ๋ฆฌ๋ทฐ

  • ์ถ”์ƒํ™” ๋ฒฝ์— ๋งŒ๋“  ํ•จ์ˆ˜๋Š” '์ธํ„ฐํŽ˜์ด์Šค' ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. -> ์ถ”์ƒํ™” ๋ฒฝ์„ ์ž‘๊ฒŒ ๋งŒ๋“ค์ž. (์‚ฌ์‹ค ๋ชจ๋“  ๊ณ„์ธต์— ์ ์šฉ ๊ฐ€๋Šฅ)
    • ์ถ”์ƒํ™” ๋ฒฝ์— ์ฝ”๋“œ๊ฐ€ ๋งŽ์„ ์ˆ˜๋ก, ๊ตฌํ˜„์ด ๋ณ€๊ฒฝ๋  ๋•Œ ๊ณ ์ณ์•ผ ํ•  ๊ฒƒ์ด ๋งŽ๋‹ค.
    • ๋ณ€๊ฒฝ์ด ์–ด๋ ค์›Œ ์ง€๋ฏ€๋กœ, ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋น„์šฉ์ด ๋งŽ์•„์ง„๋‹ค.
    • ๋‚ฎ์€ ์ˆ˜์ค€์˜ ์ฝ”๋“œ๊ฐ€ ๋งŽ์•„ ๋ฒ„๊ทธ๊ฐ€ ์ƒ๊ธฐ๊ธฐ ์‰ฝ๊ณ , ์ดํ•ดํ•˜๊ธฐ๋„ ์–ด๋ ต๋‹ค.
  • ๋‹ค์†Œ ์ด์ƒ์ ์ธ ๋ชจ์Šต. ํ˜ธ์ถœ ๊ทธ๋ž˜ํ”„ ํ•˜์œ„ ๊ณ„์ธต์— '์ž‘๊ณ  ๊ฐ•๋ ฅํ•œ' ๋™์ž‘์„ ๋งŒ๋“ค์—ˆ์„ ๋•Œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ˜‡
ํŽธ๋ฆฌํ•œ ๊ณ„์ธต

  • ์‹ค์šฉ์ ์ธ ์ ‘๊ทผ. ์ถ”์ƒํ™”๋Š”, ์ปค๋‹ค๋ž€ ๊ณ„์ธต ๋งŒ๋“ค๊ธฐ๋Š” ์–ด๋ ต๊ณ  ํž˜๋“ค๋‹ค. ์‹œ๊ฐ„๋„ ๋งŽ์ด ๋“ ๋‹ค.
  • ์ง€๊ธˆ ์ž‘์—…ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ํŽธ๋ฆฌํ•˜๋‹ค๋ฉด, ์„ค๊ณ„๋Š” ์กฐ๊ธˆ ๋ฉˆ์ถฐ๋„ ์ข‹๋‹ค.
  • ๋‹จ, ๊ตฌ์ฒด์ ์ธ ๊ฒƒ์„ ๋„ˆ๋ฌด ๋งŽ์ด ์•Œ์•„์•ผ ํ•œ๋‹ค๊ฑฐ๋‚˜ ์ฝ”๋“œ๊ฐ€ ์ง€์ €๋ถ„ํ•˜๋‹ค๊ณ  ๋Š๊ปด์ง„๋‹ค๋ฉด ๋‹ค์‹œ ํŒจํ„ด์„ ์ ์šฉํ•˜์ž.
  • ์–ด๋–ค ์ฝ”๋“œ๋ผ๋„ ํ•ญ์ƒ ์„ค๊ณ„ (๊ฐœ๋ฐœ์ž๋กœ์„œ์˜ ํ•„์š”์„ฑ) - ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ (๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ) ์‚ฌ์ด ์–ด๋Š ์ง€์ ์— ๋จธ๋ฌผ๊ฒŒ ๋จ.

๐Ÿ˜‡
ํ˜ธ์ถœ ๊ทธ๋ž˜ํ”„ ํ™œ์šฉ

  • ๊ธฐ๋Šฅ์  ์š”๊ตฌ์‚ฌํ•ญ : ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ literally ํ•ด์•ผํ•˜๋Š” ๊ธฐ๋Šฅ. e.g. ์„ธ๊ธˆ ๊ณ„์‚ฐ์„ ํ•˜๋ฉด ์˜ฌ๋ฐ”๋ฅธ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™€์•ผ.
  • ๋น„๊ธฐ๋Šฅ์  ์š”๊ตฌ์‚ฌํ•ญ
    • ์œ ์ง€๋ณด์ˆ˜์„ฑ (maintainability) : ์š”๊ตฌ์‚ฌํ•ญ์ด ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ ๊ฐ€์žฅ ์‰ฝ๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋Š” ์–ด๋–ค ์ฝ”๋“œ์ธ๊ฐ€
    • ํ…Œ์ŠคํŠธ์„ฑ (testability) : ์–ด๋–ค ๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•œ๊ฐ€
    • ์žฌ์‚ฌ์šฉ์„ฑ (reusability) : ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์€๊ฐ€

(์•„๋ž˜์— ์žˆ๋Š” ํ•จ์ˆ˜: ๋‚ฎ์€ ๊ณ„์ธต์˜ ํ•จ์ˆ˜ / ์œ„์— ์žˆ๋Š” ํ•จ์ˆ˜: ๋†’์€ ๊ณ„์ธต์˜ ํ•จ์ˆ˜)

  1. ์œ ์ง€๋ณด์ˆ˜์„ฑ
    • ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ํ•จ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๊ณ ์น˜๊ธฐ ์‰ฝ๋‹ค.
    • ์•„๋ž˜์— ์žˆ๋Š” ์ฝ”๋“œ์ผ์ˆ˜๋ก ๊ณ ์น˜๊ธฐ ์–ด๋ ต๋‹ค. ๊ทธ ์ฝ”๋“œ ์œ„์— ๋งŒ๋“  ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
    • ํ•ต์‹ฌ : ์ž์ฃผ ๋ฐ”๋€Œ๋Š” ์ฝ”๋“œ๋Š” ๊ฐ€๋Šฅํ•œ ์œ„์ชฝ์— ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  2. ํ…Œ์ŠคํŠธ์„ฑ
    • ์•„๋ž˜์— ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.
    • ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋งŽ์€ ์ฝ”๋“œ๊ฐ€ ๊ฐ€์žฅ ์•„๋ž˜์—์„œ ์ž˜ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
    • ๋”๋ถˆ์–ด, ์œ„์— ์žˆ๋Š” ์ฝ”๋“œ์ผ์ˆ˜๋ก ์ž์ฃผ ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ๊ฐ€ ์˜ค๋ž˜๊ฐ€์ง€ ๋ชปํ•œ๋‹ค.
    • ํ•ต์‹ฌ : ์•„๋ž˜์ชฝ์— ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด ๋” ๊ฐ€์น˜์žˆ๋‹ค.
  3. ์žฌ์‚ฌ์šฉ์„ฑ
    • ์•„๋ž˜์— ์žˆ๋Š” ์ฝ”๋“œ๊ฐ€ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ๋” ์ข‹๋‹ค.
    • ์•„๋ž˜์— ์žˆ๋Š” ์ฝ”๋“œ์ผ์ˆ˜๋ก, ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ๋œ ํ˜ธ์ถœํ•œ๋‹ค. -> ํŠน์ • ๊ฒฝ์šฐ๊ฐ€ ์กฐํ•ฉ๋œ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ํ•จ์ˆ˜์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์Œ์œผ๋กœ ์žฌ์‚ฌ์šฉ์„ฑ์ด ์ข‹๋‹ค.
    • ํ•ต์‹ฌ : ๋‚ฎ์€ ์ˆ˜์ค€์˜ ๋‹จ๊ณ„๋กœ ํ•จ์ˆ˜๋ฅผ ๋นผ๋‚ด๋ฉด ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋” ๋†’์•„์ง„๋‹ค.

๋ฐœ์ทŒ

์ฝ”๋“œ ์ค„ ์ˆ˜๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ฝ”๋“œ๊ฐ€ ์ ์ ˆํ•œ ๊ตฌ์ฒดํ™” ์ˆ˜์ค€๊ณผ ์ผ๋ฐ˜ํ™”๊ฐ€ ๋˜์–ด ์žˆ๋Š”์ง€์ž…๋‹ˆ๋‹ค.

๊ณ„์ธตํ˜• ์„ค๊ณ„๋Š” ๋ฐ”๋กœ ์•„๋ž˜ ๊ณ„์ธต์— ์žˆ๋Š” ํ•จ์ˆ˜๋กœ, ํ˜„์žฌ ๊ณ„์ธต์˜ ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ด ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

๋ฉ”๋ชจ

๊ณ„์ธต, ๊ณ„์ธต, ๊ณ„์ธต.
'ํŽธ๋ฆฌํ•œ ๊ณ„์ธต' ํŒจํ„ด์ด ๊ฐ€์žฅ ์™€๋‹ฟ์•˜๋‹ค. ์ด๋ก ์€ ์ด์ƒ, ์—…๋ฌด๋Š” ํ˜„์‹ค.

profile
I think I think too much.

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