๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋„์„œ ๋ฆฌ๋ทฐ/IT

"์ดํŽ™ํ‹ฐ๋ธŒ ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŒ…" ์ •๋ฆฌ

by ์ฃผ๋ฐœ2 2024. 12. 21.
๋ฐ˜์‘ํ˜•

 

 

1. ํšจ์œจ์ ์ด๊ณ  ์ฒด๊ณ„์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ

  • ๋ฒ„๊ทธ ์ฐพ๊ธฐ → ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ์˜ ์ „๋ถ€
  • ๋ฒ„๊ทธ๋Š” ๊ฒฝ๊ณ„๊ฐ’์„ ์ข‹์•„ํ•œ๋‹ค.
    • ์ตœ์†Œ ํ•„์š”ํ•œ ๊ฐ’์ด 10์ผ ๊ฒฝ์šฐ, 10์˜ ๊ฒฝ๊ณ—๊ฐ’(9~11)
  • ์ œํ’ˆ ์ฝ”๋“œ์˜ ํ–‰๋™์„ ๋น ๋ฅด๊ฒŒ ๊ธฐ์ˆ ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๋ณด์œ ํ•˜๋Š” ๊ฒƒ์€ ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ์— ์•ฝ๊ฐ„์˜ ์ค‘๋ณต์ด ์žˆ๋”๋ผ๋„ ํ•ญ์ƒ ๋“์ด ๋œ๋‹ค.
  • ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์˜ฌ๋ฐ”๋กœ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ๊ทธ๋ ‡๊ฒŒ ์•ˆ ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ผ์ด ๋” ๋งŽ์•„์ง€๋งŒ, ๊ทธ๋Ÿผ์—๋„ ์™œ ๊ฐ€์น˜ ์žˆ๋Š” ์ผ์ธ๊ฐ€?
    • ์ƒ์šฉ ๋ฒ„์ „์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฒ„๊ทธ์˜ ๋น„์šฉ์€ ์˜ˆ๋ฐฉํ•˜๋Š” ๋น„์šฉ๋ณด๋‹ค ํ›จ์”ฌ ๋” ํฌ๋‹ค
    • ๋ฒ„๊ทธ๋ฅผ ์ฐพ๊ณ , ํ•ด๊ฒฐ, ๊ฐœ์„ ํ•˜๋Š” ๊ณผ์ •์ด ์˜คํžˆ๋ ค ์‹œ๊ฐ„์„ ๋งŽ์ด ์†Œ๋ชจํ•œ๋‹ค.
    • ์—ฐ์Šต์ด ๊ด€๊ฑด → ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ์— ์ต์ˆ™ํ•ด์ง€๋ฉด ๋” ๋นจ๋ฆฌ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํšจ์œจ์  → ์˜ฌ๋ฐ”๋ฅธ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์ง‘์ค‘
  • ์ฒด๊ณ„์  → ์–ด๋–ค ์ฝ”๋“œ ์กฐ๊ฐ์— ๋Œ€ํ•ด ์–ด๋Š ๊ฐœ๋ฐœ์ž๋ผ๋„ ๊ฐ™์€ ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค๋Š” ๊ฒƒ
  • ํ…Œ์ŠคํŠธ ์—…๋ฌด์˜ ์–ด๋ ค์šด ์ ์€ JUnit ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒŒ ์•„๋‹Œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ๋ฒ„๊ทธ๋ฅผ ๋“œ๋Ÿฌ๋‚ด๋„๋ก ์ œ๋Œ€๋กœ ์„ค๊ณ„ํ•˜๋Š” ์ผ
  • “๊ฒ€์ฆ์€ ์‹œ์Šคํ…œ์ด ์ œ๋Œ€๋กœ ๋˜์–ด ์žˆ๋Š”๊ฐ€์— ๊ด€ํ•œ ๊ฒƒ, ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋Š” ์˜ฌ๋ฐ”๋ฅธ ์‹œ์Šคํ…œ์„ ๊ฐ€์ง€๋Š” ๋ฐฉ๋ฒ•์— ๊ด€ํ•œ ๊ฒƒ”
  • ํด๋ž˜์Šค ์„ค๊ณ„ ๋ฐฉ์‹์€(์•„ํ‚คํ…์ณ) ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์–ผ๋งˆ๋‚˜ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.
๐Ÿ’ก ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ์‹œ์Šคํ…œ์—์„œ ์ž‘์—… ๋‹จ์œ„๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ž๋™ํ™”๋œ ์ฝ”๋“œ ์กฐ๊ฐ, ์ž‘์—… ๋‹จ์œ„๋Š” ํ•œ ๋ฉ”์„œ๋“œ, ํ•œ ํด๋ž˜์Šค ๋˜๋Š” ํ•จ๊ป˜ ๋™์ž‘ํ•˜๋Š” ์—ฌ๋Ÿฌ ํด๋ž˜์Šค์— ์ด๋ฅผ ์ˆ˜ ์žˆ๊ณ , ๊ฒ€์ฆ ๊ฐ€๋Šฅํ•œ ๋‹จ ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•œ๋‹ค. (๋กœ์ด ์˜ค์‰๋กœ๋ธŒ, 2009)

 

์š”์•ฝ

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

 

2. ๋ช…์„ธ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ

๐Ÿ’ก ํ•™์Šต ๋‚ด์šฉ
    - ๋ช…์„ธ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•์„ ์ ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•
    - ํ”„๋กœ๊ทธ๋žจ ๊ฒฝ๊ณ„์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๊ฒฝ๊ณ„ ํ…Œ์ŠคํŠธ: ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ฒฝ๊ณ„ ๊ทผ์ฒ˜์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฒ„๊ทธ๋ฅผ ๋งŒ๋“ค ํ™•๋ฅ ์€ ๋‹ค๋ฅธ ์ž…๋ ฅ๊ฐ’์— ๋น„ํ•ด ๋” ํฌ๋‹ค.

2.2 ๊ฐ„๋žตํžˆ ์‚ดํŽด๋ณด๋Š” ๋ช…์„ธ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ

  1. ์š”๊ตฌ์‚ฌํ•ญ ์ดํ•ด
    • ํ”„๋กœ๊ทธ๋žจ์ด ๋ฌด์—‡์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”์ง€, ๋ง์•„์•ผ ํ•˜๋Š”์ง€, ํŠน์ • ์ผ€์ด์Šค, ๋ณ€์ˆ˜ ํƒ€์ž…, ์ž…๋ ฅ ๋„๋ฉ”์ธ ๋“ฑ
  2. ํ”„๋กœ๊ทธ๋žจ ํƒ์ƒ‰
    • ํ”„๋กœ๊ทธ๋žจ ๊ฐ€์ง€๊ณ  ๋†€๊ธฐ
  3. ๊ตฌํš ์‹๋ณ„
    • ์ž…๋ ฅ ๋ณ€์ˆ˜ ํƒ€์ž…, ๋ฒ”์œ„, ๋ณ€์ˆ˜ ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ, ์˜์กด์„ฑ, ์ถœ๋ ฅ๊ฐ’ ๋“ฑ
  4. ๊ฒฝ๊ณ„ ๋ถ„์„
  5. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ณ ์•ˆ
  6. ํ…Œ์ŠคํŠธ ์ž๋™ํ™”
  7. ๊ฐ•ํ™”

์š”์•ฝ

  • ์š”๊ตฌ์‚ฌํ•ญ์€ ํ…Œ์ŠคํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ฐธ๊ณ  ์ž๋ฃŒ๋‹ค.
  • ๋ช…์„ธ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ 7๋‹จ๊ณ„ ์ ‘๊ทผ๋ฒ•์„ ์ œ์•ˆํ•œ๋‹ค.
  • ๋ฒ„๊ทธ๋Š” ๊ฒฝ๊ณ„๋ฅผ ์ข‹์•„ํ•˜์ง€๋งŒ, ๊ฒฝ๊ณ„ ์‹๋ณ„ํ•˜๋Š” ์ผ์€ ๊ฐ€์žฅ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹จ์ˆœํ•œ ํ”„๋กœ๊ทธ๋žจ๋„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ˆ˜๊ฐ€ ๋งค์šฐ ๋Š˜์–ด๋‚  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ž˜ ํŒ๋‹จํ•˜๊ณ  ๊ฒฐ์ •ํ•˜์ž.

 

3. ๊ตฌ์กฐ์  ํ…Œ์ŠคํŠธ์™€ ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€

๐Ÿ’ก ํ•™์Šต ๋‚ด์šฉ
    - ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•
    - ๊ตฌ์กฐ์  ํ…Œ์ŠคํŠธ์™€ ๋ช…์„ธ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ์˜ ๊ฒฐํ•ฉ
    - ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ํ™œ์šฉ๋ฒ• & ์ผ๋ถ€ ๊ฐœ๋ฐœ์ž๋Š” ์‹ซ์–ดํ•˜๋Š” ์ด์œ 

3.2 ๊ตฌ์กฐ์  ํ…Œ์ŠคํŠธ ๊ฐ„๋žตํžˆ ์‚ดํŽด๋ณด๊ธฐ

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

3.10.6 ๋ฌด์—‡์„ (ํ…Œ์ŠคํŠธ) ์ˆ˜ํ–‰ํ•˜์ง€ ๋ง์•„์•ผ ํ• ๊นŒ?

  • catch ๋ธ”๋ก, equals&hashCode, getter/setter, ์ƒ์„ฑ์ž ๋“ฑ
  • ๋ชจ๋“  ์ฝ”๋“œ๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ฆ๋ช…๋  ๋•Œ๊นŒ์ง€ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค.

์š”์•ฝ

  • ๊ตฌ์กฐ์  ํ…Œ์ŠคํŠธ์˜ ์ „๋ฐ˜์  ๊ฐœ๋…์€ ์ฝ”๋“œ์˜ ์–ด๋–ค ๋ถ€๋ถ„์ด ์•„์ง ์ˆ˜ํ–‰๋˜์ง€ ์•Š์•˜๋Š”์ง€๋ฅผ ๋ถ„์„ ๋ฐ ์ˆ˜ํ–‰ํ• ์ง€ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ

4. ๊ณ„์•ฝ ์„ค๊ณ„

 ๐Ÿ’ก ํ•™์Šต ๋‚ด์šฉ
    - ์‚ฌ์ „ ์กฐ๊ฑด, ์‚ฌํ›„ ์กฐ๊ฑด, ๋ถˆ๋ณ€์‹์„ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•
    - ๊ณ„์•ฝ๊ณผ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•œ ์ดํ•ด
  • ํด๋ž˜์Šค์— ๋Œ€ํ•ด ๋ช…ํ™•ํ•œ ๊ณ„์•ฝ์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ?
    • ํด๋ž˜์Šค๊ฐ€ ์‚ฌ์ „ ์กฐ๊ฑด์œผ๋กœ ๋ฌด์—‡์„ ์š”๊ตฌํ•˜๋Š”์ง€, ์‚ฌํ›„ ์กฐ๊ฑด์œผ๋กœ ๋ฌด์—‡์„ ์ œ๊ณตํ•˜๋Š”์ง€, ๋ถˆ๋ณ€์‹์€ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ํ•ญ์ƒ ๋ฌด์—‡์„ ์œ ์ง€ํ•˜๋„๋ก ํ•˜๋Š”์ง€๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ฆฝ
    • ์‚ฌ์ „ ์กฐ๊ฑด: ๋ฉ”์„œ๋“œ๊ฐ€ ๋ฐ›์•„๋“ค์ธ ์ž…๋ ฅ๊ฐ’์ด ์š”๊ตฌ์‚ฌํ•ญ์„ ์ค€์ˆ˜ํ•˜๋„๋ก ๋ณด์žฅ
    • ์‚ฌํ›„ ์กฐ๊ฑด: ๋ฉ”์„œ๋“œ๊ฐ€ ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ์— ์•ฝ์†ํ•œ ๊ฒƒ์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๋ณด์žฅ
  • ๋ฌธ์„œ์— ์‚ฌ์ „, ์‚ฌํ›„ ์กฐ๊ฑด์„ ๋ช…ํ™•ํžˆ ๊ธฐ์ˆ ํ•˜๋Š” ์ผ ์—ญ์‹œ ์ค‘์š”ํ•˜๊ณ  ๋งค์šฐ ๊ถŒ์žฅ๋œ๋‹ค.
/**
 * ์„ธ๊ธˆ ๊ณ„์‚ฐ ...
 * @param value ์„ธ๊ธˆ ๊ณ„์‚ฐ์„ ์œ„ํ•œ ๊ฐ’, ๊ฐ’์€ ์–‘์ˆ˜์—ฌ์•ผ ํ•œ๋‹ค.
 * @return ๊ณ„์‚ฐํ•œ ์„ธ๊ธˆ, ์„ธ๊ธˆ์€ ํ•ญ์ƒ ์–‘์ˆ˜์—ฌ์•ผ ํ•œ๋‹ค.
*/

4.5.4 ์˜ˆ์™ธ vs ๋ถ€๋“œ๋Ÿฌ์šด ๋ฐ˜ํ™˜๊ฐ’

  • ํด๋ผ์ด์–ธํŠธ์˜ ์‚ถ์„ ๋‹จ์ˆœํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€์ง€ ๋ง๊ณ  ๋ฉ”์„œ๋“œ ๋ฐ˜ํ™˜๊ฐ’์„ ‘๋ถ€๋“œ๋Ÿฝ๊ฒŒ’ ๋งŒ๋“œ๋Š” ๊ฒƒ
    • ์ผ์–ด๋‚˜์„œ๋Š” ์•ˆ ๋˜๋Š” ๋™์ž‘์ด ๋ฐœ์ƒํ•  ๋•Œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ทธ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฃจ์–ด์•ผ ํ• ์ง€ ๋ชจ๋ฅธ๋‹ค๋ฉด ์˜ˆ์™ธ
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ณ„์† ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค๋ฉด ๋ถ€๋“œ๋Ÿฌ์šด ๊ฐ’ ๋ฐ˜ํ™˜ (substring)

์š”์•ฝ

  • ๊ณ„์•ฝ์„ ์„ค๊ณ„ํ•˜๋Š” ์ผ์€ ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ์˜ ์‚ฌ์ „ ์กฐ๊ฑด, ์‚ฌํ›„ ์กฐ๊ฑด, ๋ถˆ๋ณ€์‹์„ ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜ํ•˜๋Š” ๊ฒƒ
  • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์™€ ๊ณ„์•ฝ ๊ฒ€์‚ฌ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ชฉํ‘œ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋‘˜ ๋‹ค ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
  • ๊ณ„์•ฝ์„ ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ์˜ํ–ฅ์„ ํŒŒ์•…ํ•ด์•ผ ํ•œ๋‹ค.

 

5. ์†์„ฑ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ

๐Ÿ’ก ํ•™์Šต ๋‚ด์šฉ
    - ์†์„ฑ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•
    - ์†์„ฑ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ๋˜๋Š” ์˜ˆ์‹œ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ๋ฅผ ์–ธ์ œ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š”์ง€
  • ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒŒ ์ข‹์ง€ ์•Š์€ ์ƒ๊ฐ์ผ๊นŒ? → ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„
  • ์ €์ž๋Š” ์ข…์ข… ํ…Œ์ŠคํŠธ๋ฅผ ์‰ฝ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ด๋“  ์ข‹์•„ํ•œ๋‹ค.

 

6. ํ…Œ์ŠคํŠธ ๋”๋ธ”๊ณผ ๋ชจ์˜ ๊ฐ์ฒด

๐Ÿ’ก ํ•™์Šต ๋‚ด์šฉ
    - ์Šคํ…, ํŽ˜์ดํฌ, ๋ชจ์˜ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•
    - ๋ชจ์˜ ๊ฐ์ฒด๊ฐ€ ๋ฌด์—‡์ธ์ง€, ๋ชจ์˜ ๊ฐ์ฒด๋ฅผ ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€, ์–ธ์ œ ์‚ฌ์šฉํ•˜์ง€ ๋ง์•„์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ดํ•ด
    - ๋ชจ์˜ํ•  ์ˆ˜ ์—†๋Š” ๊ฐ์ฒด๋ฅผ ๋ชจ์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๋‹ค๋ฅธ ํด๋ž˜์Šค์— ์˜์กดํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ํ…Œ์ŠคํŠธํ•  ๋•Œ ์˜์กด์„ฑ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋•Œ ํ…Œ์ŠคํŠธ ๋”๋ธ”์ด ๋„์›€์ด ๋œ๋‹ค.
  • A ํด๋ž˜์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด IssuedInvoices์— ์˜์กดํ•˜๋Š” ๊ฐ’์„ ํ•˜๋“œ ์ฝ”๋”ฉ๋œ ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ํ•˜๋Š” IssuedInvoices๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฆ‰, A ์ฃผ๋ณ€์˜ ํ™˜๊ฒฝ์„ ์ œ์–ดํ•จ์œผ๋กœ์จ ๋ณต์žกํ•œ ์ข…์†์„ฑ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ  A์˜ ๋™์ž‘ ๋ฐฉ์‹์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹ค๋ฅธ ๊ฐ์ฒด์˜ ๋™์ž‘์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์žฅ์   
    • ๋” ํฐ ์ œ์–ด๊ถŒ์„ ๊ฐ€์ง„๋‹ค. (๊ฐ€์งœ ๊ฐ์ฒด์—๊ฒŒ ๋ฌด์—‡์„ ํ•ด์•ผ ํ• ์ง€ ์‰ฝ๊ฒŒ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค.)
    • ์‹œ๋ฎฌ๋ ˆ์ด์…˜์€ ๋น ๋ฅด๋‹ค.
    • ํด๋ž˜์Šค ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์„ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. (ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ)

6.1 ๋”๋ฏธ, ํŽ˜์ดํฌ, ์Šคํ…, ๋ชจ์˜ ๊ฐ์ฒด, ์ŠคํŒŒ์ด

6.1.1 ๋”๋ฏธ ๊ฐ์ฒด

  • ๋”๋ฏธ๋Š” ํ…Œ์ŠคํŠธ ๋Œ€์ƒ ํด๋ž˜์Šค์— ์ „๋‹ฌ๋˜์ง€๋งŒ ์ ˆ๋Œ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด
  • ๋น„์ฆˆ๋‹ˆ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ „๋‹ฌํ•ด์•ผ ํ•  ์ธ์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์ง€๋งŒ, ํ…Œ์ŠคํŠธ๋Š” ์ด๋“ค ์ค‘ ๋ช‡ ๊ฐœ๋งŒ ์ˆ˜ํ–‰ํ•  ๋•Œ
/* Customer๊ฐ€ ์–ด๋–ค Adress๋ฅผ ๊ฐ€์ง€๋“ ์ง€ ์ƒ๊ด€ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. 
 * ์ด๋Ÿด ๊ฒฝ์šฐ ํ…Œ์ŠคํŠธ๋Š” ๋”๋ฏธ Adress ๊ฐ์ฒด๋ฅผ ์„ค์ •ํ•ด์„œ Customer ํด๋ž˜์Šค์— ๋„˜๊ธธ ์ˆ˜ ์žˆ๋‹ค.
**/
public class Customer {
	private Long id;
	private Address adress;
	private Email email;
}

6.1.2 ํŽ˜์ดํฌ ๊ฐ์ฒด

  • ํŽ˜์ดํฌ ๊ฐ์ฒด๋Š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋ ค๋Š” ํด๋ž˜์Šค๊ฐ™์ด ์‹ค์ œ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ตฌํ˜„์ฒด๋ฅผ ๊ฐ€์ง„๋‹ค.
  • ํ•˜์ง€๋งŒ ๋˜‘๊ฐ™์ด ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํ›จ์”ฌ ๋‹จ์ˆœํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

6.1.3 ์Šคํ…

  • ์Šคํ…์€ ํ…Œ์ŠคํŠธ ๊ณผ์ •์—์„œ ์ˆ˜ํ–‰๋œ ํ˜ธ์ถœ์— ๋Œ€ํ•ด ํ•˜๋“œ ์ฝ”๋”ฉ๋œ ์‘๋‹ต์„ ์ œ๊ณตํ•œ๋‹ค.
  • ํŽ˜์ดํฌ ๊ฐ์ฒด์™€๋Š” ๋‹ฌ๋ฆฌ ์Šคํ…์€ ์‹ค์ œ ๋™์ž‘ํ•˜๋Š” ๊ตฌํ˜„์ฒด๊ฐ€ ์—†๋‹ค.

6.1.4 ๋ชจ์˜ ๊ฐ์ฒด

  • ๋ชจ์˜ ๊ฐ์ฒด๋Š” ๋ฉ”์„œ๋“œ์˜ ์‘๋‹ต์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ์Šคํ… ๊ฐ™์€ ์—ญํ• ์„ ํ•œ๋‹ค.
  • ํ•˜์ง€๋งŒ ๋ชจ์˜ ๊ฐ์ฒด๋Š” ๋ชจ๋“  ์ƒํ˜ธ์ž‘์šฉ์„ ์ €์žฅํ•ด์„œ ๋‚˜์ค‘์— ๋‹จ์–ธ๋ฌธ์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.
  • ๋ชจํ‚น ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ‘๋ฉ”์„œ๋“œ๋Š” ์–ด๋–ค ํŠน์ • ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š”๋‹ค’ ๋˜๋Š” ๋ฉ”์„œ๋“œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ A๋กœ ๋‘ ๋ฒˆ ํ˜ธ์ถœ๋˜๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜ B๋กœ ํ•œ ๋ฒˆ ํ˜ธ์ถœ๋œ๋‹ค์™€ ๊ฐ™์€ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๋‹จ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.

6.1.5 ์ŠคํŒŒ์ด

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

6.2 ๋ชจ์˜ ๊ฐ์ฒด ํ”„๋ ˆ์ž„์›Œํฌ (๋ชจํ‚คํ† , Mockito)

  • ๋ชจํ‚คํ† ๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ๋ฉ”์„œ๋“œ๋งŒ ์•Œ์•„๋„ ์ถฉ๋ถ„ํ•˜๋‹ค.
    • mock(<class>): ์ฃผ์–ด์ง„ ํด๋ž˜์Šค๋กœ ๋ชจ์˜ ๊ฐ์ฒด ๋˜๋Š” ์Šคํ… ์ƒ์„ฑ
    • when(<mock>.<method>).thenReturn(<value>): ๋ฉ”์„œ๋“œ์˜ ๋™์ž‘์„ ์ •์˜ํ•˜๋Š” ์—ฐ์†๋œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
    • verify(<mock>).<method>: ๋ชจ์˜ ๊ฐ์ฒด์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ์˜ˆ์ƒ๋œ ๋ฐฉ์‹๋Œ€๋กœ ์ผ์–ด๋‚ฌ๋Š”์ง€ ๊ฒ€์ฆ

6.3 ํ˜„์—…์—์„œ์˜ ๋ชจ์˜ ๊ฐ์ฒด

  • ์–ธ์ œ ๋ชจ์˜ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ณ , ์–ธ์ œ ์‚ฌ์šฉํ•˜์ง€ ๋ง์•„์•ผ ํ•˜๋Š”๊ฐ€?
  • ๋ˆ„๊ตฐ๊ฐ€๋Š” ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ณ , ๋ˆ„๊ตฐ๊ฐ€๋Š” ๋ชจ์˜๋ฅผ ํ•˜๋ฉด ์•ˆ ๋œ๋‹ค๊ณ  ๋ฏฟ๋Š” ์‚ฌ๋žŒ๋“ค๋„ ์žˆ๋‹ค.

6.3.1 ๋ชจ์˜ ๊ฐ์ฒด์˜ ๋‹จ์ 

  • ๋ชจ์˜ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๊ฐ€ ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ๋ชจ์˜ ๊ฐ์ฒด๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋„๋ก ๋งŒ๋“ ๋‹ค๊ณ  ๋ฏฟ๋Š”๋‹ค.
  • ๋ชจ์˜ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ…Œ์ŠคํŠธ๋ฅผ ๋œ ํ˜„์‹ค์ ์œผ๋กœ ๋งŒ๋“ ๋‹ค.
    • A → B ์˜์กด, B์˜ sum() ๋ฉ”์„œ๋“œ๋Š” ํ•ญ์ƒ ์–‘์˜ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์ด๋ฅผ ๋ชจ์˜ ๊ฐ์ฒด๋กœ ์ž‘์„ฑ ํ•˜๊ณ ,
      ์–ผ๋งˆ ํ›„ B์˜ sum() ๋ฉ”์„œ๋“œ๋Š” ์Œ์˜ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๋น„์ฆˆ๋‹ˆ์Šค ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค.
      B์˜ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•ด์„œ๋งŒ ์ˆ˜์ •ํ•˜๊ณ , A๊ฐ€ ์‹ ๊ทœ ์‚ฌํ›„ ์กฐ๊ฑด์„ ์ž˜ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๋Š” ์ผ์„ ๊นŒ๋จน๊ธฐ ์‰ฌ์šด๋ฐ, ๋” ๋‚˜์œ ์ ์€ A์˜ ํ…Œ์ŠคํŠธ๋Š” ์—ฌ์ „ํžˆ ํ†ต๊ณผํ•œ๋‹ค..
    • ๋ชจ์˜ ๊ฐ์ฒด๊ฐ€ ํด๋ž˜์Šค์˜ ์‹ค์ œ ๊ณ„์•ฝ์„ ํ‘œํ˜„ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ๋ชจ์˜ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ œ์–ด๊ถŒ์„ ์žƒ๊ธฐ ์‰ฝ๋‹ค.
    • ๋”ฐ๋ผ์„œ ๋ชจ์˜ ๊ฐ์ฒด๊ฐ€ ๋Œ€๊ทœ๋ชจ๋กœ ์ž˜ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด ๊ณ„์•ฝ์„ ์‹ ๊ฒฝ ์จ์„œ ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค.
  • ๋ชจ์˜ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•œ ํ…Œ์ŠคํŠธ๋Š” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ชจ์˜ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์™€ ๊ฒฐํ•ฉํ•˜๊ฒŒ ๋œ๋‹ค.
    • ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ๋Š” ์ œํ’ˆ ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋„ˆ๋ฌด ๋งŽ์ด ์•Œ๊ณ  ์žˆ๋‹ค.
    • ์ด๋Š”, ํ…Œ์ŠคํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ํž˜๋“ค ์ˆ˜ ์žˆ๋Š”๋ฐ ์‹ค์ œ ํด๋ž˜์Šค์˜ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜๋ฉด ํ…Œ์ŠคํŠธ ์—ญ์‹œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ ์กด์žฌํ•จ
  • ๋”ฐ๋ผ์„œ, ๋ชจ์˜ ๊ฐ์ฒด๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ํ•ด์ฃผ์ง€๋งŒ ํ…Œ์ŠคํŠธ์™€ ์ œํ’ˆ ์ฝ”๋“œ์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

6.3.2 ๋ชจ์˜ํ•ด์•ผ ํ•˜๋Š” ๋Œ€์ƒ๊ณผ ํ•˜์ง€ ๋ง์•„์•ผ ํ•˜๋Š” ๋Œ€์ƒ

์‹ค์šฉ์ ์œผ๋กœ ์˜์กด์„ฑ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ข…๋ฅ˜์ผ ๋•Œ ๋ชจ์˜ ๊ฐ์ฒด๋‚˜ ์Šคํ…์„ ์‚ฌ์šฉํ•œ๋‹ค.

  1. ์˜์กด์„ฑ์ด ๋„ˆ๋ฌด ๋Š๋ฆฐ ๊ฒฝ์šฐ
  2. ์˜์กด์„ฑ์ด ์™ธ๋ถ€ ์ธํ”„๋ผ์™€ ํ†ต์‹ ํ•˜๋Š” ๊ฒฝ์šฐ
  3. ์˜์กด์„ฑ์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ธฐ ํž˜๋“  ๊ฒฝ์šฐ

๋ฐ˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๋ชจ์˜ ๊ฐ์ฒด๋‚˜ ์Šคํ…์„ ๊บผ๋ฆฌ๊ฒŒ ๋œ๋‹ค.

  1. ์—”ํ‹ฐํ‹ฐ(Entity)
  2. ๋„ค์ดํ‹ฐ๋ธŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฉ”์„œ๋“œ
  3. ์ถฉ๋ถ„ํžˆ ๋‹จ์ˆœํ•œ ์˜์กด์„ฑ

6.3.5 ๋ชจ์˜์— ๊ด€ํ•œ ์™ธ๋ถ€ ์˜๊ฒฌ (๊ตฌ๊ธ€ ์—”์ง€๋‹ˆ์–ด๋Š” ์ด๋ ‡๊ฒŒ ์ผํ•œ๋‹ค)

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

์š”์•ฝ

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

7. ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ์„ ์œ„ํ•œ ์„ค๊ณ„

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

7.1 ๋„๋ฉ”์ธ ์ฝ”๋“œ์—์„œ ์ธํ”„๋ผ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ

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

์‡ผํ•‘ ์นดํŠธ ์˜ˆ์ œ ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด

7.2 ์˜์กด์„ฑ ์ฃผ์ž…๊ณผ ์ œ์–ด ๊ฐ€๋Šฅ์„ฑ

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

7.4 ์˜์กด์„ฑ ์ „๋‹ฌ ๋ฐฉ๋ฒ•: ํด๋ž˜์Šค ์ƒ์„ฑ์ž์™€ ๋ฉ”์„œ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜

// ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์˜์กด์„ฑ ์ „๋‹ฌ
public class ChristmasDiscount {
  private final Clock clock;

  public ChristmasDiscount(Clock clock) {
    this.clock = clock;
}

  public double applyDiscount(Double rawAmount) {
    LocalDate today = clock.now();
    ...
    }
}

// ๋งค๊ฐœ๋ณ€์ˆ˜์— ์˜์กด์„ฑ ์ „๋‹ฌ
public class ChristmasDiscount {

  public double applyDiscount(Double rawAmount, LocalDate today) {
    	...
    }
}
  • ์˜์กด์„ฑ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฉ”์„œ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์›ํ•˜๋Š” ๊ฐ’์„ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์žฅ๋‹จ์ ?
    • (+) ๊ตฌํ˜„๊ณผ ํ…Œ์ŠคํŠธ ์ธก๋ฉด์—์„œ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ์ฑ…์ผ ์ˆ˜ ์žˆ๋‹ค.
    • (-) ์ด ํด๋ž˜์Šค๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ชจ๋“  ๊ณณ์—์„œ ์ธ์ˆ˜๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค
  • ํด๋ž˜์Šค, ํ…Œ์ŠคํŠธ์˜ ๋ณต์žก๋„ ์ฆ๊ฐ€ + ํด๋ผ์ด์–ธํŠธ ๋‹จ์ˆœ ํ˜ธ์ถœ
  • ํด๋ž˜์Šค, ํ…Œ์ŠคํŠธ์˜ ๋ณต์žก๋„ ๊ฐ์†Œ + ํด๋ผ์ด์–ธํŠธ ๋ณต์žก๋„ ์•ฝ๊ฐ„ ์ฆ๊ฐ€

7.5 ํ˜„์—…์—์„œ์˜ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ ์„ค๊ณ„

  • private ๋ฉ”์„œ๋“œ๋Š” ์˜ค๋กœ์ง€ public ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•œ๋‹ค.
  • ์œ„๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด private ๋ฉ”์„œ๋“œ์˜ ์‘์ง‘๋„๊ฐ€ ๋–จ์–ด์ง€๊ณ  ๋ณต์žกํ•˜๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ, ํ…Œ์ŠคํŠธ๊ฐ€ ์šฐ๋ฆฌ์—๊ฒŒ ๋ฌด์–ธ๊ฐ€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์ข‹์€ ์˜ˆ์‹œ (๋ฉ”์„œ๋“œ ๋ถ„๋ฆฌ ๋“ฑ)

์š”์•ฝ

  • ํ…Œ์ŠคํŠธ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋Š” ์šฐ๋ฆฌ ์‚ถ์„ ํž˜๋“ค๊ฒŒ ํ•œ๋‹ค. ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋„๋ก ํ•˜์ž.
  • ๋„๋ฉ”์ธ ์ฝ”๋“œ์—์„œ ์ธํ”„๋ผ๋ฅผ ๋ถ„๋ฆฌํ•˜์ž.
  • ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ด์„œ๋Š” ์•ˆ ๋˜์ง€๋งŒ, ์‹ค์šฉ์ ์œผ๋กœ๋Š” ํ…Œ์ŠคํŠธ์— ๋„์›€์ด ๋˜๋„๋ก ์ œํ’ˆ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์— ์ „์ ์œผ๋กœ ์ฐฌ์„ฑํ•œ๋‹ค.

8. ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ (TDD)

๐Ÿ’ก ํ•™์Šต ๋‚ด์šฉ
    - ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ์ดํ•ด
    - TDD๋กœ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•
    - TDD๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋˜๋Š” ๊ฒฝ์šฐ

8.3 ํ˜„์—…์—์„œ์˜ TDD

  • ํ•„์ž๋Š” TDD๊ฐ€ ์ฃผ๋Š” ๋ฆฌ๋“ฌ์— ๊ฐ์‚ฌํ•œ๋‹ค.
    • ๋‹ค์Œ์œผ๋กœ ๊ฐœ๋ฐœํ•  ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ์„ ์ฐพ๊ณ , ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ํ•„์š”ํ•œ ๋งŒํผ ๊ตฌํ˜„ํ•˜๋ฉฐ, ์ž‘์—… ๋‚ด์šฉ์„ ๊ณ ์ฐฐํ•˜๋Š” ์ผ๋กœ ์ธํ•ด ๊ฐœ๋ฐœ ์†๋„์— ๋”ฐ๋ผ ์กฐ์ ˆ ๊ฐ€๋Šฅ

8.3.2 ํ•ญ์ƒ TDD๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ? (X)

  • ์„ค๊ณ„, ์•„ํ‚คํ…์ฒ˜, ํŠน์ • ์š”๊ตฌ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์ด ๋ช…ํ™•ํ•˜์ง€ ์•Š์„ ๋•Œ TDD๋ฅผ ์‚ฌ์šฉ
  • ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃจ๊ฑฐ๋‚˜ ๊ทธ ๋ฌธ์ œ์— ์ „๋ฌธ์„ฑ์ด ๋ถ€์กฑํ•  ๋•Œ TDD๋ฅผ ์‚ฌ์šฉ
  • ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ๋ฐฐ์šธ๋งŒํ•œ ๊ฒŒ ์—†์œผ๋ฉด TDD๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. (๋ฐ”๋กœ ์ฝ”๋”ฉ)
  • TDD๋Š” ์„ค๊ณ„ ๊ด€์ ์—์„œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ตฌํ˜„ ๊ด€์ ์—์„œ ์ž‘์„ฑ์ค‘์ธ ์ฝ”๋“œ๋ฅผ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

9. ๋Œ€๊ทœ๋ชจ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ

๐Ÿ’ก ํ•™์Šต ๋‚ด์šฉ
    - ๋Œ€๊ทœ๋ชจ ํ…Œ์ŠคํŠธ๋ฅผ ์–ธ์ œ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š”์ง€
    - ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์™€ ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ๋ฅผ ๊ณ ์•ˆํ•˜๋Š” ๋ฐฉ๋ฒ•

9.1 ๋Œ€๊ทœ๋ชจ ํ…Œ์ŠคํŠธ ์‚ฌ์šฉ ์‹œ๊ธฐ

  • ๊ฐ ๊ฐœ๋ณ„ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋Š” ์ˆ˜ํ–‰ํ–ˆ์œผ๋‚˜, ์ „์ฒด ๋™์ž‘์ด ์—ฌ๋Ÿฌ ํด๋ž˜์Šค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด ํ•จ๊ป˜ ๊ตฌ๋™๋  ๋•Œ ์–ด๋– ํ•œ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ
  • ํ…Œ์ŠคํŠธํ•˜๋ ค๋Š” ํด๋ž˜์Šค๊ฐ€ ๊ฑฐ๋Œ€ํ•œ ํ”Œ๋Ÿฌ๊ทธ ์•ค ํ”Œ๋ ˆ์ด ์•„ํ‚คํ…์ฒ˜์˜ ๊ตฌ์„ฑ์š”์†Œ์ผ ๋•Œ

9.2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ SQL ํ…Œ์ŠคํŠธ

9.2.1 SQL ์ฟผ๋ฆฌ์—์„œ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ

  • ์ฒซ ๋ฒˆ์งธ → ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฏธ๋ฆฌ ์„ค์ •ํ•œ ํ›„ ํ…Œ์ŠคํŠธ (SELECT ํ…Œ์ŠคํŠธ)
    • ํ…Œ์ŠคํŠธ๋Š” ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Œ

9.2.3 SQL ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์ธํ”„๋ผ ์„ค์ •

  • ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋ถ€๋ชจ ํด๋ž˜์Šค ์ƒ์„ฑํ•˜๊ธฐ (SQLIntegrationTestBase)
    • ์—ฐ๊ฒฐ ์ƒ์„ฑ + ์ •๋ฆฌ + Close
    • ์ด๋Ÿฌํ•œ ์žฅ์ ์€, ์ถ”ํ›„ ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚  ๋•Œ ๋ชจ๋‘ ํ•œ๊ณณ์—์„œ ์ผ์–ด๋‚˜๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒƒ
    • ์žฌํ™œ์šฉํ•˜๋Š” ์ฝ”๋“œ

9.2.4 ๋ชจ๋ฒ” ์‚ฌ๋ก€

  • ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์ž (10์žฅ)
    • ํ…Œ์ŠคํŠธ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” ๋„์šฐ๋ฏธ ํด๋ž˜์Šค
  • ๋‹จ์–ธ API๋ฅผ ์ž˜ ๋งŒ๋“ค์–ด์„œ ์žฌํ™œ์šฉํ•˜์ž
  • ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ์†Œํ™”ํ•˜์ž
  • ์Šคํ‚ค๋งˆ์˜ ๋ณ€ํ™”๋ฅผ ๊ณ ๋ คํ•˜์ž

9.4 ๋Œ€๊ทœ๋ชจ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ๋งˆ์ง€๋ง‰ ๋…ผ์˜

9.4.1 ํ…Œ์ŠคํŠธ๋ฅผ ์–ด๋Š ์ˆ˜์ค€์œผ๋กœ ํ•ด์•ผ ํ• ๊นŒ?

  • ๋ชจ๋“  ๊ฒƒ์„ ๋‹จ์œ„ ์ˆ˜์ค€์—์„œ ์ˆ˜ํ–‰ํ•˜๊ณ , ๋Œ€๊ทœ๋ชจ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ–‰์œ„๋ฅผ ์ˆ˜ํ–‰ํ•˜์ž.

9.4.2 ๋น„์šฉ/์ด๋“ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•˜์ž

  • ์ด ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋น„์šฉ์ด ์–ผ๋งˆ๋‚˜ ๋“ค๊นŒ?
  • ์‹คํ–‰ํ•˜๋Š” ๋ฐ ๋“œ๋Š” ๋น„์šฉ์€?
  • ์ด ํ…Œ์ŠคํŠธ๋กœ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ด๋“์€ ๋ฌด์—‡์ธ๊ฐ€? ์–ด๋–ค ๋ฒ„๊ทธ๋ฅผ ์žก์„ ์ˆ˜ ์žˆ์„๊นŒ?

9.4.4 ์ ํ•ฉํ•œ ์ฝ”๋“œ ์ธํ”„๋ผ๊ฐ€ ํ•ต์‹ฌ์ด๋‹ค

  • ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ, ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ๋Š” ๋‘˜ ๋‹ค ๋ฐฐํ›„์— ์ ์ ˆํ•œ ์ธํ”„๋ผ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  • ํ…Œ์ŠคํŠธ ์ธํ”„๋ผ์— ํˆฌ์žํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ด๋‹ค. (ํ™˜๊ฒฝ ์„ค์ •, ์ดˆ๊ธฐํ™”, ๊ฒ€์ƒ‰, ๋‹จ์–ธ ๋“ฑ์˜ ์ž‘์—…)

์š”์•ฝ

  • ํ…Œ์ŠคํŠธ ์ž‘์„ฑ → ๋น„์šฉ < ์ด๋“
  • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•ญ์ƒ ๋‹จ์ˆœํ•˜๊ณ , ๋น„์šฉ์ด ์ €๋ ดํ•˜๋‹ค - ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ํ™•์‹  → ์ „์ฒด ์‹œ์Šคํ…œ ํ™•์‹ 

 

10. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ํ’ˆ์งˆ

๐Ÿ’ก ํ•™์Šต ๋‚ด์šฉ
    - ์šฐ์ˆ˜ํ•˜๊ณ  ์œ ์ง€ ๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฌ์šด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์›์น™๊ณผ ๋ชจ๋ฒ” ์‚ฌ๋ก€
    - ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ์ดํ•ด์™€ ๋ฐœ์ „์„ ์ €ํ•ดํ•˜๋Š” ํ…Œ์ŠคํŠธ ๋ƒ„์ƒˆ๋ฅผ ์—†์• ๋Š” ๋ฐฉ๋ฒ•

10.1 ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์„ ์œ„ํ•œ ์›์น™

10.1.1 ํ…Œ์ŠคํŠธ๋Š” ๋นจ๋ผ์•ผ ํ•œ๋‹ค.

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

10.1.2 ํ…Œ์ŠคํŠธ๋Š” ์‘์ง‘๋ ฅ ์žˆ๊ณ  ๋…๋ฆฝ์ ์ด๋ฉฐ ๊ฒฉ๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค

  • ํ•˜๋‚˜์˜ ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์ด๋‚˜ ์‹œ์Šคํ…œ์˜ ํ–‰์œ„๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด ์ด์ƒ์ ์ด๋‹ค.
  • ํ…Œ์ŠคํŠธ๊ฐ€ ์ž์‹ ์ด ๋งŒ๋“  ์ง€์ €๋ถ„ํ•œ ์‚ฌํ•ญ์„ ์ •๋ฆฌํ•˜๋„๋ก ํ•˜์ž.
    • ๋””์Šคํฌ์— ์ƒ์„ฑ๋œ ํŒŒ์ผ ์‚ญ์ œ ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ž…๋ ฅํ•œ ๊ฐ’ ์‚ญ์ œ ๋“ฑ ์ดˆ๊ธฐํ™” ์ƒํƒœ

10.1.4 ํ…Œ์ŠคํŠธ๋Š” ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋ฉฐ ๋ถˆ์•ˆ์ •ํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค

  • ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ํ…Œ์ŠคํŠธ๋Š” ์‹คํ–‰ ํšŸ์ˆ˜์— ์ƒ๊ด€์—†์ด ๊ฒฐ๊ณผ๊ฐ€ ๋™์ผํ•˜๋‹ค.
  • ํ…Œ์ŠคํŠธ๋Š” ์—ฌ๋Ÿฌ ์ด์œ ๋กœ ๋ถˆ์•ˆ์ •ํ•ด์ง„๋‹ค.
    • ์™ธ๋ถ€ ์ž์›์ด๋‚˜ ๊ณต์œ  ์ž์›์— ์˜์กดํ•˜๋Š” ๊ฒฝ์šฐ (ex. ํŒŒ์ผ ๊ฒฝ๋กœ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)
    • ๋ถ€์ •ํ™•ํ•œ ํƒ€์ž„์•„์›ƒ
    • ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ์™€ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ƒํ˜ธ์ž‘์šฉ์ด ์ผ์–ด๋‚œ ๊ฒฝ์šฐ
  • Luo ์™ธ ์—ฐ๊ตฌ์ง„(2014)์ด ๋ฐํ˜€๋‚ธ ๋ถˆ์•ˆ์ •ํ•œ ํ…Œ์ŠคํŠธ์˜ ์›์ธ
    • ๋น„๋™๊ธฐ์‹ ๋Œ€๊ธฐ, ๋™์‹œ์„ฑ, ํ…Œ์ŠคํŠธ ์ˆœ์„œ ์˜์กด์„ฑ
    • ๋Œ€๋ถ€๋ถ„์˜ ๋ถˆ์•ˆ์ •ํ•œ ํ…Œ์ŠคํŠธ๋Š” ์ž‘์„ฑํ•  ๋•Œ๋ถ€ํ„ฐ ๋ถˆ์•ˆ์ •ํ•˜๋‹ค.
    • ๋ถˆ์•ˆ์ •ํ•œ ํ…Œ์ŠคํŠธ๊ฐ€ ํ”Œ๋žซํผ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์ผ์€ ๋“œ๋ฌผ๋‹ค (๋‹ค๋ฅธ ์šด์˜์ฒด์ œ ๋“ฑ)
    • ๋ถˆ์•ˆ์ •์„ฑ์€ ์ข…์ข… ์™ธ๋ถ€ ์ž์›์— ๋Œ€ํ•œ ์˜์กด์„ฑ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋ฉฐ, ๊ฐ ํ…Œ์ŠคํŠธ๊ฐ€ ๋๋‚˜๊ณ  ์‹คํ–‰๋˜๋Š” ์‚ฌ์ด์— ๊ณต์œ ๋˜๋Š” ์ƒํƒœ๋ฅผ ์ •๋ฆฌํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

10.1.6 ํ…Œ์ŠคํŠธ๋Š” ํ–‰์œ„๊ฐ€ ๋ณ€๊ฒฝ๋  ๊ฒฝ์šฐ ๊นจ์ ธ์•ผ ํ•œ๋‹ค

  • ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์˜ˆ์ƒ๋œ ํ–‰์œ„๊ฐ€ ๊นจ์กŒ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

10.1.8 ํ…Œ์ŠคํŠธ๋Š” ์ž‘์„ฑํ•˜๊ธฐ ์‰ฌ์›Œ์•ผ ํ•œ๋‹ค

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

10.1.9 ํ…Œ์ŠคํŠธ๋Š” ์ฝ๊ธฐ ์‰ฌ์›Œ์•ผ ํ•œ๋‹ค

  • ์ฝ”๋“œ ๊ฐ€๋…์„ฑ, ์ œํ’ˆ ์ฝ”๋“œ์— ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹ ๊ด€๋ จํ•ด์„œ๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์—๋„ ์ ์šฉ๋œ๋‹ค.
  • ํ…Œ์ŠคํŠธ๋ฅผ ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ ๋‘ ๊ฐ€์ง€ ์›์น™
    • ๋ชจ๋“  ์ •๋ณด(์ž…๋ ฅ, ๋‹จ์–ธ๋ฌธ)๊ฐ€ ์ถฉ๋ถ„ํžˆ ๋ช…ํ™•ํ•œ์ง€ ํ™•์ธํ•˜๊ณ ,
    • ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋งˆ๋‹ค ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์ž‘์„ฑ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

10.2 ํ…Œ์ŠคํŠธ ๋ƒ„์ƒˆ

10.2.4 ๋„ˆ๋ฌด ๋ฒ”์šฉ์ ์ธ ํ”ฝ์Šค์ฒ˜

  • ํ…Œ์ŠคํŠธ์˜ ํ”ฝ์Šค์ฒ˜๊ฐ€ ๊ฐ€๋Šฅํ•œ ํ•œ ๊ตฌ์ฒด์ ์ด๊ณ  ์‘์ง‘๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์ผ์€ ํ…Œ์ŠคํŠธ์˜ ๋ณธ์งˆ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค. (ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•  ๋•Œ ๊ด€๋ จ์„ฑ์ด ์ปค์•ผ ํ•œ๋‹ค.)
  • (ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์„ฑ์— ์ค‘์‹ฌ์„ ๋‘”) ๋นŒ๋” ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฒ”์šฉ ํ”ฝ์Šค์ฒ˜ ์ž‘์„ฑ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.

11. ๋งˆ๋ฌด๋ฆฌ

  • ์ƒˆ๋กœ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๊ถŒํ•œ์ด ์žˆ๋‹ค๋ฉด ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.
  • ๋ ˆ๊ฑฐ์‹œ ํด๋ž˜์Šค์— ์ƒˆ๋กœ์šด ๋™์ž‘์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๋ฉด?
    • ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ , ์ƒˆ๋กœ์šด ๋™์ž‘์„ ์ถ”๊ฐ€ํ•œ ํ›„ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ
    • ๋ ˆ๊ฑฐ์‹œ ํด๋ž˜์Šค์—์„œ ์ƒˆ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
    • ๊ฒฐ๊ณผ์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ํด๋ž˜์Šค์— ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
  • ์†Œํ”„ํŠธ์›จ์–ด ๋ชจ๋‹ˆํ„ฐ๋ง์— ์ถฉ๋ถ„ํžˆ ํˆฌ์žํ•˜์ž. (๋ฌด์—‡์„ ๋กœ๊ทธ๋กœ ๋‚จ๊ฒจ์•ผ ํ• ์ง€, ํŒ€์˜ ๊ทธ๋ผ์šด๋“œ ๋ฃฐ์„ ์ •๋ฆฝํ•˜์ž.)

 

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€