2020.10.17 - java-squid/effective-java GitHub Wiki

회고

Han

  • μΆœκ·Όν•˜λ‹ˆκΉŒ νž˜λ“¬
  • μž¬νƒ 1~2번 κΈ°λŒ€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
  • item10μ—μ„œ μˆ˜ν•™ λ‚΄μš© 살짝 보기 μ‹«μ–΄μ‘Œλ‹€.
  • λ£° κ°œμ •μ΄ ν•„μš”ν•˜λ‹€.

David

  • 학ꡐ λ‹€λ‹ˆλ‹ˆκΉŒ νž˜λ“€λ‹€
  • 과제 + μ‹œν—˜....
  • μ•„μ΄ν…œμ΄ μ–΄λ ΅μ§„ μ•Šμ•˜λ‹€.

Jack

  • λ‹€μŒμ£Ό 참석(10/24)은 μ’€ νž˜λ“€ 것 κ°™μŒ.

λ‹€μŒ μŠ€ν„°λ””λŠ”..?

  • ν•˜λ‚˜μ˜ μ•„μ΄ν…œμ— λŒ€ν•΄ λ„ˆλ¬΄ 깊게 λ“€μ–΄κ°€λŠ” 것이 쒋은 λ°©λ²•μΌκΉŒ?
    • 개개인이 μƒκ°ν–ˆμ„ λ•Œ, 이건 찾아봐야겠닀고 μƒκ°λ˜λŠ” μ§ˆλ¬Έλ“€μ€ λ‹€ λ‚¨κ²¨μ£ΌλŠ” 츑면으둜 μ§„ν–‰
  • item3 (han, david, sunny)
  • item8에 λŒ€ν•΄μ„œλŠ” 각자 정리할 것(david, jack)

Item 9,10,11

Item 9

  • AutoCloseable λ₯Ό κ΅¬ν˜„λ°›μ€ κ°μ²΄λŠ” try~문에 λ“€μ–΄κ°€λ©΄, μžλ™μœΌλ‘œ close() λœλ‹€.
  • μ˜ˆμ™Έ stack traceκ°€ μŒ“μ΄λ©΄, λ‚˜μ€‘μ— μžˆλŠ” 것을 λ¬΄μ‹œν•˜κ³  맨 처음(μ›λž˜ μ˜ˆμ™Έ λ°œμƒμ˜ 원인)을 좔적함.

Item 10

  • 논리적 λ™μΉ˜μ„±μ€ μ‚¬λžŒλ“€μ΄ μ–΄λ–»κ²Œ κ·œμΉ™μ„ μ •μ˜ν•˜λƒμ— 따라 λ‹¬λ €μžˆλ‹€.

    • value objectμ—μ„œ κ°™μŒ(equality)을 μ •μ˜ν•˜λŠ” 것.
    • 같은 μ£Όμ†Œ(==)λ₯Ό κ³΅μœ ν•˜μ§€ μ•Šλ”λΌλ„, 값이 같닀라고 μ •μ˜ν•  λ•Œ
  • View λ©”μ„œλ“œλž€ 무엇인가?

    • ColorPointκ°€ Pointλ₯Ό μƒμ†ν•΄μ„œ μ‚¬μš©ν•΄μ•Όν•˜λŠ”λ°, ColorPointκ°€ Pointλ₯Ό 객체λ₯Ό ν•„λ“œλ‘œ κ°€μ§€κ³  있고, 거기에 color 만 κ°€μ§€κ³  있음.
    • ColorPointμ—μ„œ Point 만 λ°˜ν™˜ν•˜λŠ” λ©”μ„œλ“œλ₯Ό view λ©”μ„œλ“œλΌ λΆ€λ₯Έλ‹€.
    • μ•„λ§ˆλ„, ColorPoint의 ν•œ 츑면을 λ°˜ν™˜ν•˜κΈ° λ•Œλ¬Έμ΄ μ•„λ‹κΉŒ?
    • 상속이 κ°€μ§€κ³  μžˆλŠ” 큰 μž₯점듀이 μžˆμ§€λ§Œ, equals κ·œμ•½μ„ μ§€ν‚€κΈ° μœ„ν•΄μ„œλŠ” abstract 클래슀λ₯Ό μ‚¬μš©ν•΄μ•Όν•˜μ§€ μ•Šμ„κΉŒ?
  • AutoValue

    • lombokμ—μ„œ μ œκ³΅ν•˜κ³  μžˆλŠ” EqualsHashCode 등을 μ œκ³΅ν•΄μ£ΌλŠ” ν”„λ ˆμž„μ›Œν¬
    • lombok을 μ‚¬μš©ν•˜κ³  있으면 ꡳ이 μ‚¬μš©ν•  ν•„μš” μ—†μŒ
      • μ™œ? λ‘¬λ³΅μ—μ„œ 더 λ§Žμ€ κΈ°λŠ₯(Builder...)등을 μ œκ³΅ν•΄μ£Όλ‹ˆκΉŒ.
  • URL Host Ip Equals ...

    • equalsλ₯Ό κ΅¬ν˜„ν•  λ•Œ, μ™ΈλΆ€ λ¦¬μ†ŒμŠ€κ°€ ν¬ν•¨λ˜λ©΄ μ•ˆλœλ‹€.
      • μ™œ? 객체 μžμ‹ μ˜ μ˜λ„μ™€λŠ” λ‹€λ₯΄κ²Œ, λ³€ν™”ν•  수 μžˆμœΌλ‹ˆκΉŒ.
  • ν•„λ“œμ˜ ν‘œμ€€ν˜•

    • ν‘œμ€€ν˜•?
    • canonical form
    • ν‘œμ€€ν˜•μ€ ν•˜λ‚˜λ§Œ μ‘΄μž¬ν•΄μ•Όν•˜κ³ , κ°μ²΄μ—μ„œ ν‘œμ€€ν˜•μ„ μ‚¬μš©ν•˜λ©΄, λ°˜λ“œμ‹œ μ•½μ†λœ ν•œ λŒ€λ‘œ(μ˜ˆμƒν•œ λŒ€λ‘œ) λ™μž‘ν•΄μ•Όν•œλ‹€.
    • cf) Java ν‘œμ€€ν˜•μ€ Oracle이 주도함.
  • 객체지ν–₯적 μΈ‘λ©΄

    • ColorPoint , Point μƒμ†μœΌλ‘œ κ΅¬ν˜„λ˜μ—ˆμ„ λ•Œ, equals을 μ–΄κΈ°λŠ” 걸까?
      • λŒ€μΉ­μ„±, 좔이성을 μ–΄κΈΈ 수 있음.
    • μ–΄λ–»κ²Œ 보면 μ œμ•½μ΄λΌκ³  λŠλ‚„ μˆ˜λ„ μžˆμ§€λ§Œ, 객체 μ„Έμƒμ—μ„œ μ§€μΌœμ•Όν•  법.
    • chapter3에 λŒ€ν•΄ μžμ„Ένžˆ λ³΄λŠ” 게 쒋을듯
      • μ™œ? Object에 λŒ€ν•΄ μ–΄λ–»κ²Œ 상속받고 μžˆλŠ”μ§€ μ•Œλ €μ£Όκ³  있기 λ•Œλ¬Έμ—.

Item11

  • 비결정적인 μš”μ†Œλž€?

    • 비결정적인 μš”μ†ŒλŠ” 가변적인 ν•„λ“œλ₯Ό μ˜λ―Έν•˜λŠ” 게 μ•„λ‹κΉŒ?
    • PhoneNumber μΈμŠ€ν„΄μŠ€μ—μ„œ μ •μ˜λœ hashcode λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  λ•Œ, μ™ΈλΆ€ 상황에 따라 λ‹¬λΌμ§€λŠ” ν•„λ“œλ“€μ΄ μ—†μœΌλ‹ˆκΉŒ, 항상 같은 ν•΄μ‰¬μ½”λ“œ 값을 λ°˜ν™˜ν•  것을 μ˜λ―Έν•˜λŠ” λ“―.
    • Java μ—μ„œ μ‚¬μš©ν•˜λŠ” keyλŠ” λΆˆλ³€κ°μ²΄μž„.
  • μ§€μ—° μ΄ˆκΈ°ν™” μ „λž΅μ— λŒ€ν•΄

    • LazyλΌλŠ” 게, μ‚¬μš©ν•˜κΈ° μ „κΉŒμ§€λŠ” placeholder 만 λ‚¨κ²¨λ‘¬μ„œ, μ„±λŠ₯적 μ΄μŠˆμ—μ„œ 이득을 얻을 수 μžˆμ„λ“―.
  • AutoValue

    • Equals, Hascode, toString만 지원
    • Lombok은 μœ„μ˜ κΈ°λŠ₯에 λ”ν•΄μ„œ 더 많이 지원을 ν•΄μ£Όλ‹ˆκΉŒ, 더 μ’‹μŒ.

μ€€λΉ„

-> Han -> 10μ›” 24일