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

λ§€κ°œλ³€μˆ˜κ°€ μœ νš¨ν•œμ§€ κ²€μ‚¬ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ49)]
πŸ“‚ JAVA/μ΄νŽ™ν‹°λΈŒ μžλ°”

λ§€κ°œλ³€μˆ˜κ°€ μœ νš¨ν•œμ§€ κ²€μ‚¬ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ49)]

2023. 12. 10. 13:40

  λ©”μ„œλ“œλ‚˜ μƒμ„±μžλ₯Ό μž‘μ„±ν•  λ•Œλ©΄ κ·Έ λ§€κ°œλ³€μˆ˜λ“€μ— μ–΄λ–€ μ œμ•½μ΄ μžˆμ„μ§€ 생각해야 ν•œλ‹€. 이λ₯Ό μœ„ν•œ μ›μΉ™ 2κ°€μ§€λ₯Ό μ‚΄νŽ΄λ³΄μž.

 

πŸ“™ 1. 원칙 1 : 였λ₯˜λŠ” κ°€λŠ₯ν•œ ν•œ 빨리 (λ°œμƒν•œ κ³³μ—μ„œ) μž‘μ•„μ•Ό ν•œλ‹€.

  였λ₯˜λ₯Ό λ°œμƒν•œ μ¦‰μ‹œ μž‘μ§€ λͺ»ν•˜λ©΄ ν•΄λ‹Ή 였λ₯˜λ₯Ό κ°μ§€ν•˜κΈ° μ–΄λ €μ›Œμ§€κ³ , κ°μ§€ν•˜λ”λΌλ„ 였λ₯˜μ˜ λ°œμƒ 지점을 μ°ΎκΈ° μ–΄λ €μ›Œμ§„λ‹€.

λ§€κ°œλ³€μˆ˜ 검사λ₯Ό μ œλŒ€λ‘œ ν•˜μ§€ λͺ»ν•˜λ©΄ μ•„λž˜μ™€ 같은 λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆλ‹€.

  • λ©”μ„œλ“œκ°€ μˆ˜ν–‰λ˜λŠ” 쀑간에 λͺ¨ν˜Έν•œ μ˜ˆμ™Έλ₯Ό λ˜μ§€λ©° μ‹€νŒ¨ν•  수 μžˆλ‹€.
  • λ©”μ„œλ“œκ°€ 잘 μˆ˜ν–‰λ˜μ§€λ§Œ 잘λͺ»λœ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•  수 μžˆλ‹€.
  • λ©”μ„œλ“œλŠ” λ¬Έμ œμ—†μ΄ μˆ˜ν–‰λμ§€λ§Œ, μ–΄λ–€ 객체λ₯Ό μ΄μƒν•œ μƒνƒœλ‘œ λ§Œλ“€μ–΄λ†“μ•„μ„œ 미래의 μ•Œ 수 μ—†λŠ” μ‹œμ μ— 이 λ©”μ„œλ“œμ™€λŠ” κ΄€λ ¨ μ—†λŠ” 였λ₯˜λ₯Ό λ§Œλ“€ 수 μžˆλ‹€.

  μ΄λŸ¬ν•œ 문제λ₯Ό μ˜ˆλ°©ν•˜κ³ μž publicκ³Ό protected λ©”μ„œλ“œλŠ” λ§€κ°œλ³€μˆ˜ 값이 잘λͺ»λμ„ λ•Œ λ˜μ§€λŠ” μ˜ˆμ™Έλ₯Ό λ¬Έμ„œν™”ν•΄μ•Ό ν•œλ‹€. λ˜ν•œ, λ§€κ°œλ³€μˆ˜μ˜ μ œμ•½μ„ λ¬Έμ„œν™”ν•œλ‹€λ©΄ κ·Έ μ œμ•½μ„ μ–΄κ²Όμ„ λ•Œ λ°œμƒν•˜λŠ” μ˜ˆμ™Έλ„ ν•¨κ»˜ κΈ°μˆ ν•΄μ•Ό ν•œλ‹€.

/**
 *
 * 항상 음이 μ•„λ‹Œ BigIntegerλ₯Ό λ°˜ν™˜ν•œλ‹€λŠ” μ μ—μ„œ remainder λ©”μ„œλ“œμ™€ λ‹€λ₯΄λ‹€.
 *
 * @param m κ³„μˆ˜ (μ–‘μˆ˜μ—¬μ•Ό ν•œλ‹€.)
 * @return ν˜„μž¬ κ°’ mod m
 * @throws ArithmeticException m이 0보닀 μž‘κ±°λ‚˜ κ°™μœΌλ©΄ λ°œμƒν•œλ‹€.
 */
public BigInteger mod(BigInteger m) {
    if (m.signum() <= 0)
        throw new ArithmeticException("κ³„μˆ˜(m)λŠ” μ–‘μˆ˜μ—¬μ•Ό ν•©λ‹ˆλ‹€. " + m);
    ... // 계산 μˆ˜ν–‰
}

 

πŸ“™ 2. 원칙 2 : λ‚˜μ€‘μ— μ“°λ €κ³  μ €μž₯ν•˜λŠ” λ§€κ°œλ³€μˆ˜μ˜ μœ νš¨μ„±μ„ κ²€μ‚¬ν•˜λΌ.

  λ©”μ„œλ“œκ°€ 직접 μ‚¬μš©ν•˜μ§€λŠ” μ•ŠμœΌλ‚˜ λ‚˜μ€‘μ— μ“°κΈ° μœ„ν•΄ μ €μž₯ν•˜λŠ” λ§€κ°œλ³€μˆ˜λŠ” 특히 더 μ‹ κ²½ μ¨μ„œ 검사해야 ν•œλ‹€.

  Listλ₯Ό λ°˜ν™˜ν•˜λŠ” λ©”μ„œλ“œκ°€ μžˆλ‹€κ³  ν•΄λ³΄μž. null 검사λ₯Ό μƒλž΅ν•œ 경우, ν΄λΌμ΄μ–ΈνŠΈλŠ” λŒλ €λ°›μ€ Listλ₯Ό μ‚¬μš©ν•˜λ €κ³  ν•  λ•Œ λΉ„λ‘œμ†Œ NullPointException이 λ°œμƒν•œλ‹€. 그러면 μ΄ Listλ₯Ό μ–΄λ””μ„œ κ°€μ Έμ™”λŠ”μ§€ μΆ”μ ν•˜κΈ° μ–΄λ €μ›Œ λ””버깅이 μƒλ‹Ήνžˆ κ΄΄λ‘œμ›Œμ§€κ²Œ λœλ‹€.

  λ¬Όλ‘  ν•΄λ‹Ή μ›μΉ™μ˜ μ•„λž˜μ™€ 같은 μ˜ˆμ™Έλ„ μ‘΄μž¬ν•œλ‹€.

  • μœ νš¨μ„± 검사 λΉ„μš©μ΄ μ§€λ‚˜μΉ˜κ²Œ λ†’κ±°λ‚˜ μ‹€μš©μ μ΄μ§€ μ•Šμ„ λ•Œ
  • 계산 κ³Όμ •μ—μ„œ μ•”λ¬΅μ μœΌλ‘œ 검사가 μˆ˜ν–‰λ  λ•Œ

 

  μ •λ¦¬ν•˜μžλ©΄, λ©”μ„œλ“œλ‚˜ μƒμ„±μžλ₯Ό μž‘μ„±ν•  λ•Œλ©΄ κ·Έ λ§€κ°œλ³€μˆ˜λ“€μ— μ–΄λ–€ μ œμ•½μ΄ μžˆμ„μ§€ 생각해야 ν•œλ‹€. 그리고 κ·Έ μ œμ•½λ“€μ„ λ¬Έμ„œν™”ν•˜κ³  λ©”μ„œλ“œ μ½”λ“œ μ‹œμž‘ λΆ€λΆ„μ—μ„œ λͺ…μ‹œμ μœΌλ‘œ κ²€μ‚¬ν•΄μ•Ό ν•œλ‹€.

 

 

ν•΄λ‹Ή 글은 Joshua Bloch λ‹˜μ˜ 'Effective Java 3/E'λ₯Ό μ°Έκ³ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

 

'πŸ“‚ JAVA > μ΄νŽ™ν‹°λΈŒ μžλ°”' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

λ©”μ„œλ“œ μ‹œκ·Έλ‹ˆμ²˜λ₯Ό μ‹ μ€‘νžˆ μ„€κ³„ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ51)]  (0) 2023.12.10
μ μ‹œμ— 방어적 볡사본을 λ§Œλ“€λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ50)]  (0) 2023.12.10
슀트림 λ³‘λ ¬ν™”λŠ” μ£Όμ˜ν•΄μ„œ μ μš©ν•˜λΌ - [7μž₯. λžŒλ‹€μ™€ 슀트림(μ•„μ΄ν…œ48)]  (0) 2023.12.10
λ°˜ν™˜ νƒ€μž…μœΌλ‘œλŠ” μŠ€νŠΈλ¦Όλ³΄λ‹€ μ»¬λ ‰μ…˜μ΄ λ‚«λ‹€ - [7μž₯. λžŒλ‹€μ™€ 슀트림(μ•„μ΄ν…œ47)]  (1) 2023.12.09
μŠ€νŠΈλ¦Όμ—μ„œλŠ” λΆ€μž‘μš© μ—†λŠ” ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λΌ - [7μž₯. λžŒλ‹€μ™€ 슀트림(μ•„μ΄ν…œ46)]  (0) 2023.12.09
    'πŸ“‚ JAVA/μ΄νŽ™ν‹°λΈŒ μžλ°”' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • λ©”μ„œλ“œ μ‹œκ·Έλ‹ˆμ²˜λ₯Ό μ‹ μ€‘νžˆ μ„€κ³„ν•˜λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ51)]
    • μ μ‹œμ— 방어적 볡사본을 λ§Œλ“€λΌ - [8μž₯. λ©”μ„œλ“œ(μ•„μ΄ν…œ50)]
    • 슀트림 λ³‘λ ¬ν™”λŠ” μ£Όμ˜ν•΄μ„œ μ μš©ν•˜λΌ - [7μž₯. λžŒλ‹€μ™€ 슀트림(μ•„μ΄ν…œ48)]
    • λ°˜ν™˜ νƒ€μž…μœΌλ‘œλŠ” μŠ€νŠΈλ¦Όλ³΄λ‹€ μ»¬λ ‰μ…˜μ΄ λ‚«λ‹€ - [7μž₯. λžŒλ‹€μ™€ 슀트림(μ•„μ΄ν…œ47)]
    Amenable
    Amenable
    CS, μžλ°”, 자료ꡬ쑰, μ•Œκ³ λ¦¬μ¦˜, μŠ€ν”„λ§, μŠ€ν”„λ§ λΆ€νŠΈμ— ν•΄λ‹Ήν•˜λŠ” κ°œλ°œμ— κ΄€ν•œ λ‚΄μš©μ„ κ³΅μœ ν•©λ‹ˆλ‹€.

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”