πŸŽ„ μš°μ•„ν•œν…Œν¬μ½”μŠ€ 6κΈ° ν”„λ¦¬μ½”μŠ€ - 4μ£Όμ°¨ : 크리슀마슀 ν”„λ‘œλͺ¨μ…˜

μ΄ν•˜μ–€Β·2023λ…„ 11μ›” 14일
0
post-thumbnail

β˜ƒοΈ troubleshooting

🍷 μ™œ κΈˆμ•‘μ΄ μ•„λ‹ˆλΌ κ°œμˆ˜κ°€ λ‚˜μ˜¬κΉŒ?

이번 4μ£Όμ°¨ λ―Έμ…˜μ€ 크리슀마슀 ν”„λ‘œλͺ¨μ…˜μΈλ°μš”..!

3μ£Όλ™μ•ˆμ˜ λ°©μ‹κ³ΌλŠ” 달리 NEW λ¬Έμ œκ°€ μΆœμ œλ˜μ–΄, λΉ„κ³΅κ°œ μ €μž₯μ†Œλ₯Ό μ œμΆœν•˜λŠ” κ²ƒμœΌλ‘œ λ³€κ²½λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μ£Όλͺ©ν• λ§Œν•œ 쑰건은 λ‹€μŒμ˜ 3가지 μ •λ„μ˜€μŠ΅λ‹ˆλ‹€.
1. λ‹€μ–‘ν•œ μš”κ΅¬μ‚¬ν•­μ΄ μ—¬λŸ¬ ꡰ데에 퍼져 μžˆλ‹€λŠ” 것
2. InputView, OutputViewλ₯Ό μ‚¬μš©
3. 할인이 쀑볡!!

이 점을 μœ μ˜ν•˜λ©° 기초 κΈ°λŠ₯ κ°œλ°œμ„ μ§„ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.
그런데 어김없이 λ¬Έμ œκ°€ λ°œμƒν–ˆμ£ .

  • κΈ°λŒ€ν•˜λŠ” 좜λ ₯ μ˜ˆμ‹œλŠ” λ‹€μŒκ³Ό κ°™μ•˜μŠ΅λ‹ˆλ‹€.
μ•ˆλ…•ν•˜μ„Έμš”! μš°ν…Œμ½” 식당 12μ›” 이벀트 ν”Œλž˜λ„ˆμž…λ‹ˆλ‹€.
12μ›” 쀑 식당 μ˜ˆμƒ λ°©λ¬Έ λ‚ μ§œλŠ” μ–Έμ œμΈκ°€μš”? (숫자만 μž…λ ₯ν•΄ μ£Όμ„Έμš”!)
3
μ£Όλ¬Έν•˜μ‹€ 메뉴λ₯Ό 메뉴와 개수λ₯Ό μ•Œλ € μ£Όμ„Έμš”. (e.g. ν•΄μ‚°λ¬ΌνŒŒμŠ€νƒ€-2,λ ˆλ“œμ™€μΈ-1,μ΄ˆμ½”μΌ€μ΄ν¬-1)
ν‹°λ³ΈμŠ€ν…Œμ΄ν¬-1,바비큐립-1,μ΄ˆμ½”μΌ€μ΄ν¬-2,제둜콜라-1
12μ›” 3일에 μš°ν…Œμ½” μ‹λ‹Ήμ—μ„œ 받을 이벀트 ν˜œνƒ 미리 보기!
 
<μ£Όλ¬Έ 메뉴>
ν‹°λ³ΈμŠ€ν…Œμ΄ν¬ 1개
바비큐립 1개
μ΄ˆμ½”μΌ€μ΄ν¬ 2개
제둜콜라 1개
 
<할인 μ „ 총주문 κΈˆμ•‘>
142,000원
 
<증정 메뉴>
μƒ΄νŽ˜μΈ 1개
 
<ν˜œνƒ λ‚΄μ—­>
크리슀마슀 디데이 할인: -1,200원
평일 할인: -4,046원
νŠΉλ³„ 할인: -1,000원
증정 이벀트: -25,000원
 
<μ΄ν˜œνƒ κΈˆμ•‘>
-31,246원
 
<할인 ν›„ μ˜ˆμƒ 결제 κΈˆμ•‘>
135,754원
 
<12μ›” 이벀트 배지>
산타

κ·ΈλŸ¬λ‚˜, ν˜„μž¬ κ²°κ³Ό 값에 λ‹€μŒμ˜ λ¬Έμ œκ°€ μžˆμ—ˆμ£ .
1️⃣ κΈˆμ•‘μ΄ μ•„λ‹Œ κ°œμˆ˜κ°€ λ‚˜μ˜¨λ‹€.

  • 할인 κΈˆμ•‘ 계산 λ‘œμ§μ€ μ •ν™•νžˆ μž‘μ„±ν–ˆμ§€λ§Œ, 숫자λ₯Ό Countν•˜κ³  κΈˆμ•‘μ„ λ½‘μ•„λ‚΄λŠ” 둜직이 ν•œ ꡰ데에 μž‘μ„±λ˜μ—ˆλ˜ 것이 λ¬Έμ œμž„μ„ μΈμ§€ν–ˆμŠ΅λ‹ˆλ‹€.
    κ·ΈλŸ¬λ‚˜, λ³€κ²½ 후에도 μ½”λ“œ κ°„μ˜ μ—¬λŸ¬ μ˜μ‘΄μ„±μ„ λͺ¨λ‘ ν’€μ–΄λ‚Ό 수 μ—†μ–΄ ν•΄κ²°λ˜μ§€ μ•Šμ•˜μ£ πŸ₯²

2️⃣ ν˜œνƒ λ‚΄μ—­μ˜ 고객에 λ”°λ₯Έ 할인 정보가 μ—†μŒμœΌλ‘œλ§Œ 좜λ ₯λœλ‹€.

  • 고객에 따라 λ‹¬λΌμ§€λŠ” 할인 내역을 좜λ ₯ν•˜λŠ” 둜직이 λΉ„μ–΄μžˆμ–΄ λ°œμƒν•œ 였λ₯˜μ˜€μŠ΅λ‹ˆλ‹€.
    κ·ΈλŸ¬λ‚˜, 이 μ—­μ‹œ μ½”λ“œ κ°„μ˜ μ—¬λŸ¬ μ˜μ‘΄μ„±μ„ λͺ¨λ‘ ν’€μ–΄λ‚΄κΈ°λŠ” 어렀웠기에 ν•΄κ²°λ˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€πŸ˜…

3️⃣ μ£Όλ¬Έ κΈˆμ•‘ μž…λ ₯ μ‹œ, μœ νš¨ν•œ μ£Όλ¬Έμž„μ—λ„ 예기치 μ•Šμ€ μ’…λ£Œκ°€ λ°œμƒν•œλ‹€.

  • 이 뢀뢄은 μ˜ˆμ™Έ λ©”μ‹œμ§€μ˜ 맨 μ•žμ— 각각 번호λ₯Ό 찍고, Break Pointλ₯Ό μ°μ–΄μ„œ λ””λ²„κΉ…ν•˜λŠ” 방식을 μ‚¬μš©ν•΄ ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.
    둜직이 μœ νš¨ν•œ 주문을 μ˜ˆμ™Έλ‘œ μ²˜λ¦¬ν•˜λŠ” λ°©μ‹μœΌλ‘œ 잘λͺ» μž‘μ„±λ˜μ—ˆλ˜ 것이 μ›μΈμ΄μ—ˆμ£ πŸ™‰

🐞 디버깅이 뭐지?

  • μ½”λ“œμ—μ„œ μ •ν™•νžˆ λ¬Έμ œκ°€ λ°œμƒλœ 지점이 μ–΄λŠ μœ„μΉ˜μΈμ§€ λ²”μœ„λ₯Ό μ’ν˜€λ‚˜κ°€λ©° μ°Ύμ•„λ‚˜κ°€λŠ” 것!
  • μ‹€μ œλ‘œ λ²Œλ ˆκ°€ 사이에 λ“€μ–΄κ°€ ν•˜λ“œμ›¨μ–΄λ₯Ό λ§κ°€λœ¨λ € μ½”λ“œ 였λ₯˜κ°€ λ°œμƒν–ˆλ˜ 사건을 유래둜 λ””λ²„κΉ…μ΄λΌλŠ” 이름을 μ§€μ—ˆλ‹€λŠ” 말도 μžˆμŠ΅λ‹ˆλ‹€ ν•˜ν•˜πŸ˜

κ²°λ‘  : λͺ…ν™•ν•˜κ²Œ μ½”λ“œμ˜ 둜직 였λ₯˜λ₯Ό μ „λΆ€ ν•΄κ²°ν•˜μ§€λŠ” λͺ»ν–ˆμ§€λ§Œ, κ·Έ κ³Όμ •μ—μ„œ 디버깅을 ν•˜λŠ” 방법을 μ—°μŠ΅ν•˜κ³  ν•™μŠ΅ν•  수 μžˆμ—ˆλ‹€!





🌟 Learning

✍️ ν”„λ‘œμ νŠΈμ˜ 예기치 λͺ»ν•œ μ˜ˆμ™Έ 처리 및 μ’…λ£Œ μ‹œ 디버깅 ν•˜λŠ” 법

이번 λ―Έμ…˜μ—μ„œμ˜ 쑰건 쀑 μ˜ˆμ™Έ λ©”μ‹œμ§€λ₯Ό ν†΅μΌν•˜λŠ” 것이 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.


  • λ‚ μ§œμ˜ 경우 : [ERROR] μœ νš¨ν•˜μ§€ μ•Šμ€ λ‚ μ§œμž…λ‹ˆλ‹€. λ‹€μ‹œ μž…λ ₯ν•΄ μ£Όμ„Έμš”.
  • 주문의 경우 : [ERROR] μœ νš¨ν•˜μ§€ μ•Šμ€ μ£Όλ¬Έμž…λ‹ˆλ‹€. λ‹€μ‹œ μž…λ ₯ν•΄ μ£Όμ„Έμš”.
  • μ‚¬μš©μžκ°€ 잘λͺ»λœ 값을 μž…λ ₯ν•  경우 IllegalArgumetExceptionλ₯Ό λ°œμƒμ‹œν‚€κ³ , "[ERROR]"둜 μ‹œμž‘ν•˜λŠ” μ—λŸ¬ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ ν›„ κ·Έ λΆ€λΆ„λΆ€ν„° μž…λ ₯을 λ‹€μ‹œ λ°›λŠ”λ‹€.
    • Exception이 μ•„λ‹Œ IllegalArgumentException, IllegalStateException λ“±κ³Ό 같은 λͺ…ν™•ν•œ μœ ν˜•μ„ μ²˜λ¦¬ν•œλ‹€.

이 쑰건으둜 인해 디버깅을 ν•˜λŠ”λ°μ— 어렀움이 μžˆμ—ˆμŠ΅λ‹ˆλ‹€...πŸ₯Ή
μ˜ˆμ™Έ μ²˜λ¦¬κ°€ 잘λͺ»λ˜μ–΄ μœ νš¨ν•œ 주문을 μ˜ˆμ™Έλ‘œ μ²˜λ¦¬ν•˜λŠ” λ¬Έμ œμ˜€λŠ”λ°, μ˜ˆμ™Έ λ©”μ‹œμ§€κ°€ λ™μΌν•˜λ‹ˆ μ–΄λŠ 지점인지 λ°”λ‘œ νŒŒμ•…ν•˜κΈ° μ–΄λ €μ› μ£ .
κ·Έλž˜μ„œ κ²°κ΅­ λ‹€μŒμ˜ 방법을 νƒν–ˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμ™Έ λ©”μ‹œμ§€μ˜ 맨 μ•žμ— 1,2,3,4,... 번호λ₯Ό 뢙이고, 각 μ˜ˆμ™Έλ³„λ‘œ Break pointλ₯Ό μ°λŠ”λ‹€.

μΈν…”λ¦¬μ œμ΄μ—μ„œλŠ” 디버깅 λͺ¨λ“œλ₯Ό μ§€μ›ν•˜κ³ , μ½”λ“œ μ˜†μ„ κ°„λ‹¨νžˆ ν΄λ¦­ν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œλ„ break pointλ₯Ό 지정할 수 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ break pointκ°€ λ§Žμ•„μ§€λ©΄ ν•œλˆˆμ— 관리도 κ°€λŠ₯ν•΄μš”!

μ΄λ ‡κ²Œ break pointλ₯Ό 찍어두고, Application을 runν–ˆμŠ΅λ‹ˆλ‹€.
μ˜ˆμ™Έμ˜ 지점을 break pointκ°€ 보여주기도 ν•˜μ§€λ§Œ, μ˜ˆμ™Έ λ©”μ‹œμ§€ μ•žμ˜ λ²ˆν˜Έλ‘œλ„ 지점을 더 λΉ λ₯΄κ²Œ 찾을 수 μžˆμ—ˆμ£ !

ν•˜μ§€λ§Œ, 좔후에 λ‹€λ₯Έ ν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•œλ‹€λ©΄ 이 아쉬움을 λ‹€μŒμ˜ λ°©μ‹μœΌλ‘œ ν•΄κ²°ν•˜κ³  μ‹Άλ‹€ μƒκ°ν–ˆμ–΄μš”!!

1️⃣ μ˜ˆμ™Έ λ©”μ‹œμ§€λŠ” μžμ„Έν•˜κ²Œ, 그리고 μ§€μ λ§ˆλ‹€ λ‹€λ₯΄κ²Œ 좜λ ₯될 수 μžˆλ„λ‘ λ˜μ§„λ‹€.
2️⃣ 예기치 λͺ»ν•œ μ˜ˆμ™Έκ°€ λ°œμƒν–ˆμ„ λ•Œμ—λ„ ν”„λ‘œκ·Έλž¨ μ’…λ£Œ λŒ€μ‹  λΆ€λΆ„ μž¬μ‹œμž‘μ„ ν•  수 μžˆλ„λ‘ λ‘œμ§μ„ λ°©μ–΄ν•œλ‹€.

  • κ·ΈλŸ¬λ‚˜ 2λ²ˆμ— λŒ€ν•΄μ„œλŠ” "μž…λ ₯을 계속 λŠμž„μ—†μ΄ λ°›κ²Œ 되면 μŠ€νƒ μ˜€λ²„ν”Œλ‘œμš°κ°€ λ°œμƒν•  수 μžˆμ§€ μ•Šλ‚˜?"λΌλŠ” 생각도 ν•©λ‹ˆλ‹€.
  • 이 뢀뢄을 λ³΄μ™„ν•˜κΈ° μœ„ν•΄μ„œλŠ” μž¬μž…λ ₯을 λ°›λ˜, 횟수λ₯Ό μ œν•œν•œλ‹€λŠ” 것이 κ°€μž₯ λͺ…μΎŒν•œ 해닡일 λ“― ν•©λ‹ˆλ‹€.

☝️ 결둠
디버깅을 ν•˜λŠ” 방식을 κ³ λ―Όν•˜κ³ , μ΅œλŒ€ν•œ 디버깅을 κ±°μΉ˜μ§€ μ•Šμ•„λ„ 였λ₯˜κ°€ λ°œμƒλ˜μ§€ μ•Šλ„λ‘ λ°©μ–΄ λ‘œμ§μ„ 잘 μž‘μ„±ν•œλ‹€!


이번 λ―Έμ…˜λ„ μ΄λ ‡κ²Œ λ§ˆλ¬΄λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.

μ΄λ²ˆμ—λ„ 제 생각이 λˆ„κ΅°κ°€μ—κ²Œ μžκ·Έλ§ˆν•œ 도움이 될 수 있기λ₯Ό 바라며 이만 가보도둝 ν• κ²Œμš”!

profile
μ–Έμ  κ°€ λ‚΄ μ½”λ“œλ‘œ 세상에 κΈ°μ—¬ν•  수 μžˆλ„λ‘, BE&Data Science 개발 기둝 λ…ΈνŠΈβ˜˜οΈ

0개의 λŒ“κΈ€