🎯 λͺ¨λ“  예제 μ†ŒμŠ€λŠ” β€£μ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸŽˆλ°°μ›Œ λ³Ό λ‚΄μš©

βœ… λ©”μ„œλ“œλ₯Ό 섀계할 λ•Œ μ£Όμ˜ν•  점에 λŒ€ν•΄ μ•Œμ•„λ³Έλ‹€

βœ… λ©”μ„œλ“œμ˜ μ‚¬μš©μ„±, 견고성, μœ μ—°μ„±μ— μ§‘μ€‘ν•΄μ„œ μ‚΄νŽ΄λ³Έλ‹€.

πŸ”₯ ITEM 49. λ§€κ°œλ³€μˆ˜κ°€ μœ νš¨ν•œμ§€ κ²€μ‚¬ν•˜λΌ

λ©”μ„œλ“œμ™€ μƒμ„±μž λŒ€λΆ€λΆ„μ€ μž…λ ₯ λ§€κ°œλ³€μˆ˜μ˜ 값이 νŠΉμ • 쑰건을 λ§Œμ‘±ν•˜κΈ°λ₯Ό λ°”λž€λ‹€.

μ˜ˆμ»¨λŒ€ 인덱슀 값은 음수이면 μ•ˆ 되며, 객체 μ°Έμ‘°λŠ” null이 μ•„λ‹ˆμ–΄μ•Ό ν•˜λŠ” 식이닀. 이런 μ œμ•½μ€ λ°˜λ“œμ‹œ λ¬Έμ„œν™”ν•΄μ•Ό ν•˜λ©° λ©”μ„œλ“œ λͺΈμ²΄κ°€ μ‹œμž‘λ˜κΈ° μ „μ—λŠ” 검사해야 ν•œλ‹€.

  1. docsλ₯Ό ν™œμš©ν•˜μ—¬ @throws에 λ°œμƒν•˜λŠ” μ˜ˆμ™Έλ₯Ό μ μ–΄μ£Όμž.
  2. null에 λŒ€ν•΄ JDK7 java.util.Objects.requireNonNull λ©”μ„œλ“œλŠ” μœ μ—°ν•˜κ³  μ‚¬μš©ν•˜κΈ°λ„ νŽΈν•˜λ‹ˆ, null 검사λ₯Ό ν•  λ•Œ 적극적으둜 ν™œμš©ν•˜μž.
  3. assert 단언문을 ν™œμš©ν•˜μ—¬, λ‚΄λΆ€μ μœΌλ‘œ ν•΄λ‹Ή 값이 쑰건을 λ§Œμ‘±ν•œλ‹€κ³  선언을 ν•˜μž. λŸ°νƒ€μž„μ— μ•„λ¬΄λŸ° νš¨κ³Όλ„, μ„±λŠ₯ μ €ν•˜λ„ μ—†κ³  μ‹€νŒ¨ν•œλ‹€λ©΄ AssertionErrorλ₯Ό 던져 λ‘œκΉ…μœΌλ‘œ 확인이 κ°€λŠ₯ν•˜λ‹€.

μ—¬κΈ°μ„œ 핡심은 λ§€κ°œλ³€μˆ˜μ— μ œμ•½μ„ λ‘λŠ” 게 μ’‹λ‹€λŠ” 게 μ•„λ‹ˆλ‹€. λ©”μ„œλ“œλŠ” μ΅œλŒ€ν•œ λ²”μš©μ μœΌλ‘œ 섀계해야 ν•˜κ³ , λ©”μ„œλ“œκ°€ 건넀받은 κ°’μœΌλ‘œ 무언가 μ œλŒ€λ‘œ 된 일을 ν•  수 μžˆλ‹€λ©΄ λ§€κ°œλ³€μˆ˜ μ œμ•½μ€ μ μ„μˆ˜λ‘ μ’‹λ‹€,


πŸ”₯ ITEM 50. μ μ‹œμ— 방어적 볡사본을 λ§Œλ“€λΌ

μžλ°”λŠ” μ•ˆμ „ν•œ μ–Έμ–΄λ‹€. λ„€μ΄ν‹°λΈŒ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ‹ˆ C, C++ 같이 μ•ˆμ „ν•˜μ§€ μ•Šμ€ μ–Έμ–΄μ—μ„œ ν”νžˆ λ³΄λŠ” 버퍼 μ˜€λ²„λŸ°, λ°°μ—΄ μ˜€λ²„λŸ°, μ™€μΌλ“œ 포인터 같은 λ©”λͺ¨λ¦¬ 좩돌 였λ₯˜μ—μ„œ μ•ˆμ „ν•˜λ‹€.