item 68 jihoon - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
[item68] μΌλ°μ μΌλ‘ ν΅μ©λλ λͺ λͺ κ·μΉμ λ°λ₯΄λΌ
μλ° νλ«νΌμ λͺ λͺ κ·μΉμ΄ μ μ 립λμ΄ μκ³ , κ·μΉμ ν¬κ² μ² μμ λ¬Έλ²μΌλ‘ λλλ€.
μ² μ κ·μΉ
ν¨ν€μ§, ν΄λμ€, μΈν°νμ΄μ€, λ©μλ, νλ νμ
λ³μμ μ΄λ¦μ λ€λ£¬λ€.
μ΄ κ·μΉλ€μ νΉλ³ν μ΄μ κ° μλ ν λ°λμ λ°λΌμΌ νλ€.
-
ν¨ν€μ§μ λͺ¨λ
- κ° μμλ₯Ό μ (.)μΌλ‘ ꡬλΆνμ¬ κ³μΈ΅μ μΌλ‘ μ§λλ€.
- μμλ€μ λͺ¨λ μλ¬Έμ μνλ²³ νΉμ μ«μλ‘ μ΄λ€μ§λ€.
- μ‘°μ§ λ°κΉ₯μμλ μ¬μ©λ ν¨ν€μ§λΌλ©΄ μ‘°μ§μ μΈν°λ· λλ©μΈ μ΄λ¦μ μμμΌλ‘ μ¬μ©νλ€.
- E.g. edu.cmu, com.google. org.eff
- μμΈμ μΌλ‘, νμ€ λΌμ΄λΈλ¬λ¦¬μ μ νμ ν¨ν€μ§λ€μ κ°κ° javaμ javaxλ‘ μμνλ€.
-
ν΄λμ€μ μΈν°νμ΄μ€
- νλ μ΄μμ λ¨μ΄λ‘ μ΄λ€μ§λ©°, κ° λ¨μ΄λ λλ¬Έμλ‘ μμ (E.g. List, FutherTask)
- μ¬λ¬ λ¨μ΄μ 첫 κΈμλ§ λ΄ μ½μλ max, min μ²λΌ λ리 ν΅μ©λλ μ€μλ§μ μ μΈνκ³ λ λ¨μ΄λ₯Ό μ€μ¬μ°μ§ μλλ€.
- μ½μμ κ²½μ° λ
Όλμ΄ μμ§λ§ 첫 κΈμλ§ λλ¬Έμλ‘ νλ μͺ½μ΄ λ§λ€(μ΄ μμκ³Ό λμ λͺ
νν μ μ μλ€).
- HttpUrl vs HTTPURL
-
λ©μλμ νλ
- 첫 κΈμλ₯Ό μλ¬Έμλ‘ μ΄λ€λ μ λ§ λΉΌλ©΄ ν΄λμ€ λͺ λͺ κ·μΉκ³Ό κ°λ€ (E.g. remove, ensureCapacity)
- 첫 λ¨μ΄κ° μ½μλΌλ©΄ ν΄λΉ μ½μλ λ¨μ΄ μ μ²΄κ° μλ¬Έμμ¬μΌ νλ€. (E.g httpUrl)
- μμ νλλ μμΈ
- μμ νλ : static final νλ λ° λΆλ³ μ°Έμ‘° νμ
- λ¨μ΄λ₯Ό λͺ¨λ λλ¬Έμλ‘ μ°λ©°, λ¨μ΄ μ¬μ΄λ λ°μ€λ‘ ꡬλΆνλ€ (E.g. VALUE, POSITIVE_INFINIY)
- μ΄λ¦μ λ°μ€μ μ¬μ©νλ μμλ μμ νλκ° μ μΌ
-
μ§μλ³μ
- λ€λ₯Έ λ©€λ²μ λΉμ·ν λͺ λͺ κ·μΉ μ μ©
- λ¬Έλ§₯μμ μλ―Έ μ μΆκ° μ¬μ μ½μ΄λ₯Ό μ¨λ μ’λ€ (E.g. i, denom, hoseNum)
- μ λ ₯ 맀κ°λ³μλ μ§μλ³μμ νλμ΄λ, λ©μλ μ€λͺ λ¬ΈμμκΉμ§ λ±μ₯νλ λ§νΌ μ κ²½μ λ μ¨μ€μΌ νλ€.
-
νμ 맀κ°λ³μ
- μμμ νμ : T (Type)
- 컬λ μ μμ νμ : E (Element)
- 맡μ ν€μ κ° : Kμ V (Key, Value)
- μμΈ : X (eXception)
- λ©μλ λ¦¬ν΄ νμ : R (Return)
- κ·Έ μΈ μμ νμ μ μνμ€ : T, U, V νΉμ T1, T2, T3
λ¬Έλ² κ·μΉ
μ² μ κ·μΉμ λΉν΄ λ μ μ°νκ³ λ Όλλ λ§λ€.
-
ν΄λμ€
- κ°μ²΄ μμ±ν μ μλ ν΄λμ€ : λ³΄ν΅ λ¨μ λͺ μ¬λ λͺ μ¬κ΅¬ μ¬μ©(E.g. Thread, priorityQueue, ChessPiece)
- κ°μ²΄ μμ±ν μ μλ ν΄λμ€ : λ³΄ν΅ λ³΅μν λͺ μ¬(E.g. Collectors, Collections)
-
μΈν°νμ΄μ€
- ν΄λμ€μ λμΌνκ² μ§λλ€(E.g. Collection, Comparator).
- able, ibleλ‘ λλλ νμ©μ¬λ‘ μ§λλ€(E.g. Runnable, Iterable, Accessible)
-
λ©μλ
-
λμ μν : λμ¬, λμ¬κ΅¬(E.g. append, drawImage)
-
boolean νμ λ¦¬ν΄ : is, hasλ‘ μμνκ³ λͺ μ¬λ λͺ μ¬κ΅¬ νΉμ νμ©μ¬λ‘ κΈ°λ₯νλ μ무 λ¨μ΄λ κ΅¬λ‘ λλλλ‘ μ§λλ€ (E.g. isDigit, isProbablePrime, isEmpty, isEnabled, hasSiblings)
-
ν΄λΉ μΈμ€ν΄μ€μ μμ± λ¦¬ν΄
- λ³΄ν΅ λͺ μ¬, λͺ μ¬κ΅¬ (E.g. Size, hashCode)
- getμΌλ‘ μμνλ λμ¬κ΅¬λ‘ μ§λλ€ (E.g. getTime)
- μ£Όλ‘ JavaBeans λͺ μΈμ λΏλ¦¬λ₯Ό λκ³ μλ€
- ν΄λμ€κ° ν μμ±μ getterμ setterλ₯Ό λͺ¨λ μ 곡ν λλ μ ν©ν κ·μΉ (E.g. getAttribute, setAttribute)
- getμΌλ‘ μμνλ ννλ§ μ¨μΌνλ€λ μ£Όμ₯λ μμ§λ§ κ·Όκ±°κ° λΉμ½νλ€(λͺ
μ¬, λͺ
μ¬κ΅¬ μ¬μ© μ½λκ° λ κ°λ
μ±μ΄ μ’λ€).
if (car.speed() > 2 * SPEED_LIMIT) generateAudibleAlert("μ ν μλ μ΄κ³Ό");
-
νΉλ³ν λ©μλ
- κ°μ²΄μ νμ μ λ°κΏ, λ€λ₯Έ νμ μ λ λ€λ₯Έ κ°μ²΄λ₯Ό λ°ννλ μΈμ€ν΄μ€ λ©μλ : toType (E.g. toString, toArray)
- κ°μ²΄μ λ΄μ©μ λ€λ₯Έ λ·°λ‘ λ³΄μ¬μ£Όλ λ©μλ : asType (E.g. asList)
- κ°μ²΄μ κ°μ κΈ°λ³Έ νμ κ°μΌλ‘ λ³ννλ λ©μλ : typeValue (E.g. intValue)
- μ μ ν©ν°λ¦¬ : from, of, valueOf, instance, getInstance, newInstance, getType, newType λ±μ μ¬μ©
-
-
νλ
- νλκ° μ§μ λ ΈμΆλ μΌμ΄ κ±°μ μκΈ° λλ¬Έμ κ·μΉμ΄ λ λͺ ννκ³ λ μ€μνλ€.
- boolean νμ : λ³΄ν΅ boolean μ κ·Όμ λ©μλμμ μ λ¨μ΄λ₯Ό λΊ νν (E.g. initialized, composite)
- λ€λ₯Έ νμ μ νλ : λͺ μ¬λ λͺ μ¬κ΅¬ (E.g. height, digits, bodyStyle)
-
μ§μλ³μ
- νλμ λΉμ·, μ‘°κΈ λ λμ¨
ν΅μ¬ μ 리
- μ² μ κ·μΉμ μ§κ΄μ μ΄λΌ λͺ¨νΈνμ§ μμλ°, λ¬Έλ² κ·μΉμ λ 볡μ‘νκ³ λμ¨νλ€
- λͺ λͺ κ·μΉμ 체ννμ
- μμμ΄ μ΄λλλλ‘ λ°λ₯΄μ