Amenable
Amenable's Blog
Amenable
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (189)
    • ๐Ÿ“‚ JAVA (87)
      • ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” (65)
      • ์ฃผ์š” ๊ฐœ๋… (22)
    • ๐Ÿ“‚ ๊ฐœ๋ฐœ ์„œ์  (22)
      • ์‹ค์šฉ์ฃผ์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ (1)
      • ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด (2)
      • ํด๋ฆฐ ์ฝ”๋“œ (8)
      • ํ•จ๊ป˜ ์ž๋ผ๊ธฐ (1)
      • ๊ทธ๋ฆผ์œผ๋กœ ๋ฐฐ์šฐ๋Š” HTTP&Network Basic (10)
    • ๐Ÿ“‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (8)
      • ๊ฐœ๋… (8)
      • ๋ฌธ์ œํ’€์ด (0)
    • ๐Ÿ“‚ ๋„คํŠธ์›Œํฌ (14)
      • ๊ฐœ๋… (6)
      • ์„ฑ๊ณต๊ณผ ์‹คํŒจ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” 1%์˜ ๋„คํŠธ์›Œํฌ ์›๋ฆฌ (8)
    • ๐Ÿ“‚ ์Šคํ”„๋ง (13)
      • ๊ธฐ๋ณธ ๊ฐœ๋… (13)
    • ๐Ÿ“‚ WEB (5)
    • ๐Ÿ“‚ ์ž๋ฃŒ๊ตฌ์กฐ (12)
      • ๊ฐœ๋… (2)
      • ์ •๋ ฌ (8)
      • ํŠธ๋ฆฌ (2)
    • ๐Ÿ“‚ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (10)
      • ์ตœ์†Œ์‹ ์žฅํŠธ๋ฆฌ (2)
      • ์ตœ๋‹จ ๊ฒฝ๋กœ (2)
      • ๋ฌธ์ž์—ด (2)
      • ETC (4)
    • ๐Ÿ“‚ ์•Œ๊ณ ๋ฆฌ์ฆ˜_๋ฌธ์ œํ’€์ด (4)
      • BOJ_๋ฐฑ์ค€ (4)
    • ๐Ÿ“‚ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (3)
    • ๐Ÿ“‚ DevOps (2)
      • ๋ฐฐํฌ (2)
    • ๐Ÿ“‚ ํ›„๊ธฐ (8)
      • ์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค(ํ”„๋ฆฌ์ฝ”์Šค) (4)
      • 2023๋…„ (3)
      • 2024๋…„ (1)
    • ๐Ÿ“‚ ํšŒ๊ณ  (1)
      • 2023๋…„ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿš€ GitHub

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Amenable

Amenable's Blog

ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100% ๋‹ฌ์„ฑ ํ›„๊ธฐ
๐Ÿ“‚ ํ›„๊ธฐ/2023๋…„

ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100% ๋‹ฌ์„ฑ ํ›„๊ธฐ

2023. 12. 7. 11:48

  ์ด ๊ธ€์€ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100%๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๊ณผ์ •๊ณผ ๊ทธ ๊ณผ์ •์—์„œ ๋А๋‚€ ์ ์„ ๊ธฐ๋กํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

 

๐Ÿ“š 1. ๊ณ„๊ธฐ

  ์•„๋ž˜ 2๊ฐ€์ง€ ์ด์œ ์™€ ํ•จ๊ป˜ 'ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100%๋ฅผ ๋‹ฌ์„ฑํ•ด ๋ณด์ž!'๋ผ๋Š” ๋ชฉํ‘œ๊ฐ€ ์ƒ๊ฒผ๋‹ค.

๐Ÿ“— 1. ๋กœ๋ฒ„ํŠธ C. ๋งˆํ‹ด(a.k.a Uncle Bob)์˜ ํด๋ฆฐ ์ฝ”๋”

  ํด๋ฆฐ ์ฝ”๋”์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์ด ์žˆ๋‹ค.

๋กœ๋ฒ„ํŠธ C. ๋งˆํ‹ด

์–ผ๋งˆ๋งŒํผ์˜ ์ฝ”๋“œ๋ฅผ ์ž๋™ํ™”ํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋กœ ๊ณ„์‚ฐํ•ด์•ผ ํ• ๊นŒ?
๋Œ€๋‹ตํ•  ํ•„์š”์กฐ์ฐจ ์—†๋‹ค. ๋ชจ์กฐ๋ฆฌ ๋‹ค ํ•ด์•ผ ํ•œ๋‹ค. ๋ชจ. ์กฐ. ๋ฆฌ!
100% ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ๊ถŒ์žฅํ•˜๋ƒ๊ณ ?
๊ถŒ์žฅ์ด ์•„๋‹ˆ๋ผ ๊ฐ•๋ ฅํžˆ ์š”๊ตฌํ•œ๋‹ค. ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ํ•œ ์ค„๋„ ๋น ์ง์—†์ด ์ „๋ถ€ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•œ๋‹ค.
๊ตฐ๋ง์€ ํ•„์š” ์—†๋‹ค.
                                                                                                                  - ํด๋ฆฐ ์ฝ”๋” (๋กœ๋ฒ„ํŠธ C. ๋งˆํ‹ด ์ €) - 

  ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ์‚ฌ๋žŒ์ด ์œ„์˜ ๋‚ด์šฉ์„ ๋ณธ๋‹ค๋ฉด '๋„ˆ๋ฌด ๋‹น์—ฐํ•œ ๊ฑฐ ์•„๋‹ˆ์•ผ?'๋ผ๊ณ  ์ƒ๊ฐํ•  ๊ฑฐ ๊ฐ™๋‹ค. ํ•˜์ง€๋งŒ, ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•ด๋‹น ๋‚ด์šฉ์„ ๋ณธ๋‹ค๋ฉด '๊ถŒ์žฅ์ด ์•„๋‹ˆ๋ผ ํ•„์ˆ˜๋ผ๊ณ ?' ์ƒ๊ฐํ•  ๊ฒƒ์ด๋‹ค.

  ์ด๋Ÿฌํ•œ ๋†€๋ผ์›€๊ณผ ํ•จ๊ป˜ ๋ฐ”๋กœ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100%์— ๋„์ „ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ๊ณ„์†ํ•ด์„œ ๊ทธ ์ค‘์š”์„ฑ์— ๋Œ€ํ•ด์„œ๋Š” ์ƒ๊ฐํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

 

๐Ÿ“— 2. ํ† ์Šค ์œ ํŠœ๋ธŒ

  ๋‘ ๋ฒˆ์งธ ๊ณ„๊ธฐ๋Š” ํ† ์Šคใ…ฃSLASH 21 - ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100%๋‹ค.

  ์˜์ƒ์—์„œ๋Š” ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100%๋ฅผ ๋‹ฌ์„ฑํ•˜๊ณ  ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ๋“ค(๋†’์€ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€์˜ ์ด์ , ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์—์„œ์˜ ๋ฌธ์ œ์ ๊ณผ ํ•ด๊ฒฐ์ฑ…,...)์— ๋Œ€ํ•ด์„œ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ๋‹ค. ์•ฝ 2๋…„์ด๋ผ๋Š” ์‹œ๊ฐ„ ๋™์•ˆ์˜ ๊ธฐ๋ก์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด์šฉ ์ž์ฒด๊ฐ€ ์•Œ์ฐจ๊ณ  ์žฌ๋ฐŒ์—ˆ๋‹ค.

  ์˜์ƒ์„ ๋‹ค ๋ณด๊ณ  ๋‚œ ํ›„, 'ํ† ์Šค๋ผ๋Š” ํฐ ํšŒ์‚ฌ์—์„œ๋„ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100%๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š”๋ฐ ๋‚ด๊ฐ€ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์ถฉ๋ถ„ํžˆ ํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ?'๋ผ๋Š” ์ƒ๊ฐ์„ ํ•˜์˜€๋‹ค. ๊ทธ๋ ‡๊ฒŒ 'ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100% ๋‹ฌ์„ฑ'์ด๋ผ๋Š” ์—ฌ์ •์ด ์‹œ์ž‘๋˜์—ˆ๋‹ค.๐Ÿ›ซ

 

๐Ÿ“š 2. ์ค€๋น„

  'ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100%๋ฅผ ๋‹ฌ์„ฑํ•ด ๋ณด์ž!'๋ผ๋Š” ์ƒ๊ฐ๊ณผ ํ•จ๊ป˜ ์•„๋ž˜ 3๊ฐ€์ง€๋ฅผ ์ค€๋น„ํ•˜์˜€๋‹ค.

๐Ÿ“— 1. ํ…Œ์ŠคํŠธ ์ž‘์„ฑ ๋ฐฉ๋ฒ• ํ•™์Šต

  ์ฒซ ๋ฒˆ์งธ ์ค€๋น„๋Š” ํ…Œ์ŠคํŠธ ์ž‘์„ฑ๋ฒ•์„ ํ•™์Šตํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

TDD, BDD ๋“ฑ์— ๋Œ€ํ•œ ๊ฐœ๋…์€ ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ, ํ”„๋กœ์ ํŠธ์—์„œ ์ œ๋Œ€๋กœ ๋œ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•ด ๋ณธ ๊ฒฝํ—˜์ด ์—†์—ˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ ๋ฐฉ๋ฒ•์„ ๋”ฐ๋กœ ๊ณต๋ถ€ํ•œ ์ ์ด ์—†์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฐ•์šฐ๋นˆ ๋‹˜์˜ 'Practical Testing: ์‹ค์šฉ์ ์ธ ํ…Œ์ŠคํŠธ ๊ฐ€์ด๋“œ' ๊ฐ•์˜๋ฅผ ํ†ตํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ๋ฒ•์„ ํ•™์Šตํ•˜์˜€๋‹ค.

 

Practical Testing: ์‹ค์šฉ์ ์ธ ํ…Œ์ŠคํŠธ ๊ฐ€์ด๋“œ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

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

www.inflearn.com

๊ฐ•์˜๋ฅผ ํ†ตํ•ด 

  • ๊ธฐ๋ณธ์ ์ธ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ๋ฒ•
  • TDD
  • BDD
  • ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜์—์„œ์˜ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ๋ฒ•
  • Mock ์‚ฌ์šฉ๋ฒ•
  • ์‹œ๋‚˜๋ฆฌ์˜ค ํ…Œ์ŠคํŠธ

๋“ฑ์„ ํ•™์Šตํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

  ๊ฐ•์˜์—์„œ ๋‹ค์–‘ํ•œ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ ๋ฐฉ๋ฒ•๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ ์‹œ ์œ ์šฉํ•œ ํŒ๋„ ๋งŽ์œผ๋ฏ€๋กœ ํ˜น์‹œ๋‚˜ ํ…Œ์ŠคํŠธ ๊ฐ€์ด๋“œ์— ๋Œ€ํ•ด์„œ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์ด ๊ฐ•์˜๋ฅผ ์ ๊ทน ์ถ”์ฒœํ•œ๋‹ค!!

 

๐Ÿ“— 2. JaCoCo ์„ธํŒ…

  ๋‘ ๋ฒˆ์งธ ์ค€๋น„๋Š” JaCoCo ์„ธํŒ…์ด๋‹ค. JaCoCo๋Š” Java ์ฝ”๋“œ์˜ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ์ฒดํฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค.

 

  JaCoCo๋ฅผ ํ™œ์šฉํ•œ๋‹ค๋ฉด ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„ ๋˜๋Š” ํ…Œ์ŠคํŠธ ์ž‘์„ฑ ์‹œ ๋†“์นœ ๋ถ€๋ถ„์„ ์œ„์™€ ๊ฐ™์ด ์†์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

  ๋˜ํ•œ, JaCoCo๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ค์ •๋“ค์„ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž์‹ ์ด ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.

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

 

์•„๋ž˜์˜ ๊ธ€์„ ์ฐธ๊ณ ํ•œ๋‹ค๋ฉด Gradle ํ”„๋กœ์ ํŠธ์—์„œ JaCoCo ์„ธํŒ…์„ ์†์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

Gradle ํ”„๋กœ์ ํŠธ์— JaCoCo ์„ค์ •ํ•˜๊ธฐ | ์šฐ์•„ํ•œํ˜•์ œ๋“ค ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

{{item.name}} ์•ˆ๋…•ํ•˜์„ธ์š”. ์ƒํ’ˆ์‹œ์Šคํ…œํŒ€์—์„œ ์„œ๋ฒ„ ๊ฐœ๋ฐœ(..์ƒˆ๋ฐœ)์„ ํ•˜๊ณ  ์žˆ๋Š” ์—ฐ์ฒ ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์„ธํŒ… ์ค‘์— ์ฐพ์•„๋ณด๊ณ  ์‚ฝ์งˆํ–ˆ๋˜ ๋‚ด์šฉ๋“ค์ด ๋„์›€์ด ๋ ๊นŒ ํ•˜์—ฌ ๋‚จ๊น๋‹ˆ๋‹ค. JaCoCo๋Š” Java ์ฝ”๋“œ์˜ ์ปค๋ฒ„๋ฆฌ์ง€

techblog.woowahan.com

 

๐Ÿ“— 3. ํ”„๋กœ์ ํŠธ ์ค€๋น„

  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด ํ”„๋กœ์ ํŠธ๊ฐ€ ํ•„์š”ํ–ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋Š” SSAFY์—์„œ ์ง„ํ–‰ํ•œ ๊ณตํ†ต ํ”„๋กœ์ ํŠธ๋ฅผ ํ™œ์šฉํ•˜์˜€๋‹ค. ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„์€ ์•ฝ 4์ฃผ ์ •๋„์˜€์œผ๋ฉฐ, ์ธ์ŠคํŠธ๋Ÿญ์…˜(instruction, ์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ ๋ช…๋ น ์ˆ˜)์ด ์•ฝ 3,300๊ฐœ ์ •๋„์ธ ํ”„๋กœ์ ํŠธ๋‹ค.

 

๐Ÿ“— 4. ๋‹ค์ง

  ๋งˆ์ง€๋ง‰์œผ๋กœ ์ค€๋น„ํ•  ๊ฒƒ์€ ๋‹ค์ง์ด๋‹ค. ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์–ด๋А ์ •๋„ ์–ด๋ ค์šธ ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒ์„ ํ•˜์˜€๋‹ค.

  ์Œ... ํšŒ๊ณ ๋ฅผ ์ ๊ณ  ์žˆ๋Š” ์ด ์‹œ์ ์— ๋‹ค์‹œ ํ•œ๋ฒˆ ์ƒ๊ฐํ•ด ๋ณธ๋‹ค๋ฉด, 'ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์˜ ์–ด๋ ค์›€'๋ฟ๋งŒ ์•„๋‹ˆ๋ผ 'ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์„ ์œ„ํ•œ ์‹œ๊ฐ„, ๋…ธ๋ ฅ, ์žฅ์ธ์ •์‹ '์— ๋Œ€ํ•ด์„œ๋„ ํ•œ๋ฒˆ ์ƒ๊ฐํ•ด ๋ดค์œผ๋ฉด ์–ด๋• ์„๊นŒ ์‹ถ๋‹ค. ๐Ÿ˜…

 

๐Ÿ“š 3. ๋ฌธ์ œ์ 

  ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100%๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ฒช์€ ์–ด๋ ค์›€์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๐Ÿ“— 1. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ ์ž์ฒด์˜ ์–ด๋ ค์›€

  ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์ฝ”๋“œ๊ฐ€ ํ•ญ์ƒ ๊น”๋”ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿฌํ•œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์—๋„ ์–ด๋ ค์›€์ด ์žˆ์—ˆ๋‹ค.

  ๋‚˜๋ฅผ ํฌํ•จํ•˜์—ฌ 3๋ช…์˜ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ๋ชจ๋‘๊ฐ€ ๋ฐฐ์šฐ๊ณ  ์žˆ๋Š” ์ž…์žฅ์ด๋ผ์„œ ์ข‹์€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์ฝ”๋“œ๋ฅผ ํ•ญ์ƒ ์งค ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์—ˆ๋‹ค. ์•Œ๊ณ  ์žˆ๋Š” ๋ฒ”์œ„์—์„œ ์ตœ๋Œ€ํ•œ ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•˜์˜€์ง€๋งŒ, ์—ฌ์ „ํžˆ ๋‚ฎ์€ ์‘์ง‘๋„์™€ ๋†’์€ ๊ฒฐํ•ฉ๋„๋ฅผ ๊ฐ€์ง„ ์ฝ”๋“œ๋“ค์ด ๋งŽ์•˜๋‹ค. ๐Ÿ˜ฅ

  ๊ทธ๋ ‡๊ฒŒ ์‹ค๋ ฅ์—์„œ ์˜ค๋Š” ์•„์‰ฌ์›€๊ณผ ํ•จ๊ป˜ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ๋Š” ์–ด๋А ์ •๋„ ๊น”๋”ํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์กฐ๊ธˆ์ด๋ผ๋„ ๋ฌธ์ œ์ ์ด ์žˆ๋Š” ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ๋Š” ๊ธฐ๋Šฅ์˜ ๋‹จ์œ„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋„ˆ๋ฌด ์ปค์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ๋งŽ์ด ๋“ค์–ด๊ฐ”๋‹ค.

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

 

๐Ÿ“— 2. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์— ๋Œ€ํ•œ ๊ฒฝํ—˜ ๋ถ€์กฑ

  ๋ฐ•์šฐ๋นˆ ๋‹˜์˜ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๊ฐ•์˜๋ฅผ ํ†ตํ•ด 'Presenatation Layer ํ…Œ์ŠคํŠธ, Business Layer ํ…Œ์ŠคํŠธ, Persistance Layer ํ…Œ์ŠคํŠธ, Mock ์‚ฌ์šฉ๋ฒ•' ๋“ฑ ๋‹ค์–‘ํ•œ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•˜์˜€๋‹ค.

  ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋Š” ๊ณผ์ •์—์„œ 'Spring Security'์™€ ๊ด€๋ จ๋œ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š” ๋“ฑ ๋” ๋‹ค์–‘ํ•œ ์ƒํ™ฉ๋“ค์ด ๋งŽ์•˜๋‹ค. ํ•˜๋‚˜ํ•˜๋‚˜ ์ฐพ์•„๋ณด๋ฉด์„œ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜์˜€์ง€๋งŒ, ์•„๋ฌด๋ž˜๋„ ์ฒ˜์Œ์ด๋ผ์„œ ๊ทธ๋Ÿฐ์ง€ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ ธ๋‹ค.

 

๐Ÿ“— 3. ์œ ์ง€์˜ ์–ด๋ ค์›€

  ์ด์–ด์ง€๋Š” ๋‚ด์šฉ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋“ฏ์ด ์ผ๋‹จ์€ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100%๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธด ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๊ณ„์†ํ•ด์„œ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100%๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด์„œ๋Š” ์˜๋ฌธ์ด ๋“ ๋‹ค.

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

  ์œ„์˜ ์˜ˆ์‹œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋”์šฑ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ ์†์—์„œ ๊ณผ์—ฐ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100%๋ฅผ ๊ณ„์† ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์„๊นŒ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค. ๋ฌผ๋ก  ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100%๊ฐ€ ์•„๋‹ˆ๋ฉด ๋ฐฐํฌ ์ž์ฒด๊ฐ€ ์•ˆ๋˜๋„๋ก ๊ฐ•์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์‹œ์Šคํ…œ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ, ๊ทธ๊ฒƒ์ด ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

  ๊ฐœ์ธ์ ์œผ๋กœ ๊ทธ๋ฆฌ๊ณ  ํŒ€์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100%๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋™๊ธฐ์™€ ๊ทœ์น™์ด ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 

๐Ÿ“š 4. ์„ฑ๊ณผ (์–ป์€ ์ )

๐Ÿ“— 1. ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100% ๋‹ฌ์„ฑ

  ๊ฐ€์žฅ ํฐ ์„ฑ๊ณผ๋Š” ์•„๋ฌด๋ž˜๋„ 'ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100% ๋‹ฌ์„ฑ'์ด๋‹ค.

  100%๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด 231๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค.

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

 

๐Ÿ“— 2. ํด๋ฆฐ์ฝ”๋“œ ์ž‘์„ฑ

  ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด์„œ ์กฐ๊ธˆ ๋” ๋‚˜์€ ์ฝ”๋“œ๋“ค์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

  ๋” ๋‚˜์€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋” ์‹ ๊ฒฝ์„ ์จ์„œ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰ํ•˜์—ฌ ํ•œ๋ฒˆ ๋” ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜์˜€๋‹ค. ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ํ†ตํ•ด ์ด์ „๊นŒ์ง€ ํ–ˆ๋˜ ํ”„๋กœ์ ํŠธ์™€ ๋‹ฌ๋ฆฌ ์กฐ๊ธˆ ๋” ๊ฐœ์„ ๋œ ์ฝ”๋“œ๋“ค์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด์—ˆ๋‹ค.

 

๐Ÿ“— 3. ์‹ค์ œ๋กœ ์ฒด๊ฐํ•œ ๊ฐœ๋ฐœ ์†๋„ ํ–ฅ์ƒ

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

(๋‹จ์ˆœํžˆ ๊ท€์ฐฎ์•„์„œ๋ผ๊ธฐ๋ณด๋‹ค๋Š” ์ผ์ •์ด๋ž€ ๊ฒŒ ์žˆ๊ณ  ๋ฌธ์ œ๊ฐ€ ๊ณ„์† ์ƒ๊ธฐ๋Š” ์ƒํ™ฉ์—์„œ ํ•ญ์ƒ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ์–ด๋ ค์šด ๊ฑฐ ๊ฐ™๋‹ค... ๋ฌผ๋ก  ์‹ค๋ ฅ์„ ๋” ์Œ“์•„์„œ ์ด๋Ÿฌํ•œ ๊ฒƒ๋„ ๋‹ค ๊ด€๋ฆฌํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค!!)

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

(๋ฌผ๋ก  ํ…Œ์ŠคํŠธ๋ฅผ ๊ณผํ•˜๊ฒŒ ์ž‘์„ฑํ•œ๋‹ค๋ฉด ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋А๋ ค์ง€๊ธฐ๋„ ํ•  ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒฝ์šฐ๋ณด๋‹ค๋Š” ๋„ˆ๋ฌด ์ ์€ ๊ฒฝ์šฐ๊ฐ€ ํ›จ์”ฌ ๋งŽ๋‹ค๊ณ  ํ•œ๋‹ค.)

 

๐Ÿ“š 5. ๋А๋‚€ ์ 

๐Ÿ“— "ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100%๊ฐ€ ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค."

100%๋ผ๋Š” ์ˆซ์ž๋ฅผ ๋ณด๋ฉด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜๋ฌธ์ ์ด ์žˆ์—ˆ๋‹ค.

  • ์ด๊ฒŒ ์ •๋ง ์•ˆ์ „ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ธ๊ฐ€? 
  • 100%๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๊ฒŒ ์ •ํ™•ํžˆ ๋ฌด์—‡์ด์ง€?

  ์ฒซ ๋ฒˆ์งธ ์˜๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์€ 'NO'๋‹ค. ๋‘ ๋ฒˆ์งธ ์˜๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์€ '100%๋Š” ๋‚ด๊ฐ€ ๋งŒ๋“  ํ™•๋ฅ '์ด๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ๊ฒฐ๋ก ์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100%๋ž€ '๋‚ด๊ฐ€ ๋งŒ๋“  ์ƒํ™ฉ์— ๋Œ€ํ•ด์„œ ๋‚ด๊ฐ€ ๋งŒ๋“  ๋Œ€์ฒ˜ ๋ฐฉ๋ฒ•์ด ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๊ฒƒ'์ด๋‹ค.

  ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž์‹ ์ด ๊ฐ€์ง„ ์‹์žฌ๋ฃŒ๋“ค์„ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์Œ์‹์„ ์•Œ๋ ค์ฃผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž.

public class FoodIngredient {

  private Enum foodIngredientCategory;

  // ์†Œ๋น„๊ธฐํ•œ
  private LocalDate expirationDate; 

  ...
}

public Food getFoodBy(List<Ingredient> foodIngredients) {

  ...
  
  // ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์Œ์‹์ด ์—†๋Š” ๊ฒฝ์šฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
  if(...) {
    throw new Exception("๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์Œ์‹์ด ์—†์Šต๋‹ˆ๋‹ค.");
  }

  return foodMadeFromIngredients;
}

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค.

  • ์‹์žฌ๋ฃŒ๋“ค์„ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์Œ์‹์„ ์•Œ๋ ค์ค€๋‹ค.
  • ์‹์žฌ๋ฃŒ๋“ค์„ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์Œ์‹์ด ์—†์„ ์ˆ˜ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•œ๋‹ค๋ฉด ํ•ด๋‹น ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€๋Š” 100%๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์•ˆ์ „ํ•œ ์„œ๋น„์Šค์ผ๊นŒ? ๊ผญ ๊ทธ๋Ÿฐ ๊ฒƒ๋งŒ์€ ์•„๋‹ˆ๋‹ค.

  ์‹์žฌ๋ฃŒ์˜ ์†Œ๋น„๊ธฐํ•œ์„ ํ™•์ธํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒํ•œ ์Œ์‹์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์™€ ๊ฐ™์ด ์‹์žฌ๋ฃŒ์˜ ์†Œ๋น„๊ธฐํ•œ์„ ํ™•์ธํ•œ๋‹ค๋ฉด ๋” ์•ˆ์ „ํ•œ ์„œ๋น„์Šค๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

public Food getFoodBy(List<Ingredient> foodIngredients) {

  ...

  // ์‹์žฌ๋ฃŒ๋“ค์˜ ์†Œ๋น„๊ธฐํ•œ ํ™•์ธ
  checkExpirationDate(foodIngredients)

  // ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์Œ์‹์ด ์—†๋Š” ๊ฒฝ์šฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
  if(...) {
    throw new Exception("๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์Œ์‹์ด ์—†์Šต๋‹ˆ๋‹ค.");
  }

  return foodMadeFromIngredients;
}

์ˆ˜์ •๋œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์‹์žฌ๋ฃŒ๋“ค์„ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์Œ์‹์„ ์•Œ๋ ค์ค€๋‹ค.
  • ์‹์žฌ๋ฃŒ๋“ค์„ ์ด์šฉํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์Œ์‹์ด ์—†์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์‹์žฌ๋ฃŒ์˜ ์†Œ๋น„๊ธฐํ•œ์ด ์ง€๋‚ฌ๋‹ค๋ฉด ์Œ์‹์„ ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค.

  ์ด์ฒ˜๋Ÿผ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€๊ฐ€ 100%๋ผ๋„ ์•ˆ์ „ํ•œ ์„œ๋น„์Šค๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ๋‹ค.

  ๊ทธ๋ ‡๋‹ค๋ฉด ๋” ์•ˆ์ „ํ•˜๊ณ  ๋” ๋‚˜์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ? ๊ทธ ๋‹ต์€ ๋กœ๊ทธ์™€ ๋ชจ๋‹ˆํ„ฐ๋ง์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 

    ๋‹ค์Œ ํŽธ์— ๊ณ„์†... (์‹ค๋ ฅ์„ ๋” ์Œ“์•„์„œ ์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค๐Ÿ˜Ž)

 

 

'๐Ÿ“‚ ํ›„๊ธฐ > 2023๋…„' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์—˜๋ผ์Šคํ‹ฑ์„œ์น˜(Elasticsearch) ์ ์šฉ ํ›„๊ธฐ  (0) 2023.12.08
ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ(Pair Programming) ํ›„๊ธฐ  (0) 2023.05.28
    '๐Ÿ“‚ ํ›„๊ธฐ/2023๋…„' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • ์—˜๋ผ์Šคํ‹ฑ์„œ์น˜(Elasticsearch) ์ ์šฉ ํ›„๊ธฐ
    • ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ(Pair Programming) ํ›„๊ธฐ
    Amenable
    Amenable
    CS, ์ž๋ฐ”, ์ž๋ฃŒ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์Šคํ”„๋ง, ์Šคํ”„๋ง ๋ถ€ํŠธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐœ๋ฐœ์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”