2023. 1. 5. 09:07γJAVA/Effective JAVA
μμ΄ν 2. μμ±μμ 맀κ°λ³μκ° λ§λ€λ©΄ λΉλλ₯Ό κ³ λ €νλΌ.
μμμ λ°°μ λ μ μ ν©ν°λ¦¬μ μμ±μμλ μ μ½μ΄ μλλ°, μ νμ 맀κ°λ³μκ° λ§μ κ²½μ°μ μ μ νκ² λμνκΈ° μ΄λ ΅λ€λ μ μ΄λ€.
μλ₯Ό λ€μ΄ μν ν¬μ₯ μμ μ 보λ₯Ό νννλ ν΄λμ€κ° μλ€.
μμ μ 보λ 1ν λ΄μ©λ, μ΄ nν μ 곡λ κ°μ νμ νλͺ©κ³Ό μ΄ μ§λ°©, νΈλμ€ μ§λ°©, ν¬ν μ§λ°©, μ½λ μ€νΈλ‘€, λνΈλ₯¨ λ± 20κ°κ° λλ μ ννλͺ©μΌλ‘ μ΄λ£¨μ΄μ Έ μλ€. κ·Όλ° μ΄ μ ννλͺ©μ κ°μ λλ€μ 0μ΄λ€.
μ΄λ κ² μ νμ 맀κ°λ³μκ° λ§μ λ κ³ λ €ν μ μλ λ°©μμΌλ‘ λ¨Όμ μ μΈ΅μ μμ±μ ν¨ν΄ λλ μμ±μ 체μ΄λμ΄λΌκ³ λΆλ¦¬μ€λκ² μλ€.
λμ1. μ μΈ΅μ μμ±μ ν¨ν΄ λλ μμ±μ 체μ΄λ
servingSize, servingsλ νμ 맀κ°λ³μμ΄κ³ , λλ¨Έμ§λ μ ν 맀κ°λ³μμ΄λ€.
public NutritionFacts(int servingSize, int servings) {
// this.servingSize = servingSize;
// this.servings = servings;
// this.calories = 0;
// this.fat = 0;
// this.sodium= 0;
// this.carbohydrate = 0;
this(servingSize, servings, 0); // μ μΈ΅μ μμ±μ ν¨ν΄
}
public NutritionFacts(int servingSize, int servings, int calories) {
// this.servingSize = servingSize;
// this.servings = servings;
// this.calories = calories;
// this.fat = 0;
// this.sodium= 0;
// this.carbohydrate = 0;
this(servingSize, servings, calories, 0);
}
public NutritionFacts(int servingSize, int servings, int calories, int fat) {
// this.servingSize = servingSize;
// this.servings = servings;
// this.calories = calories;
// this.fat = fat;
// this.sodium= 0;
// this.carbohydrate = 0;
this(servingSize, servings, calories, fat, 0);
}
public NutritionFacts(int servingSize, int servings, int calories, int fat, int sodium) {
// this.servingSize = servingSize;
// this.servings = servings;
// this.calories = calories;
// this.fat = fat;
// this.sodium = sodium;
// this.carbohydrate = 0;
this(servingSize, servings, calories, fat, sodium, 0);
}
public NutritionFacts(int servingSize, int servings, int calories, int fat, int sodium, int carbohydrate) {
this.servingSize = servingSize;
this.servings = servings;
this.calories = calories;
this.fat = fat;
this.sodium = sodium;
this.carbohydrate = carbohydrate;
}
μ μΈ΅μ μμ±μ ν¨ν΄μ νμ 맀κ°λ³μλ§ λ°λ μμ±μ, νμ 맀κ°λ³μμ μ ν 맀κ°λ³μ 1κ°λ₯Ό λ°λ μμ±μ, μ ν 맀κ°λ³μ 2κ°λ₯Ό λ°λ μμ±μ.. ννλ‘ μ ν 맀κ°λ³μ μ λΆ λ°λ μμ±μκΉμ§ λλ €κ°λ λ°©μμ΄λ€.
μ΄λ κ² λ§λ€μ΄λλ©΄ μ΄ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό λ§λ€λ €λ©΄ μνλ 맀κ°λ³μλ₯Ό λͺ¨λ ν¬ν¨ν μμ±μ μ€ κ°μ₯ 짧μ κ²μ 골λΌμ μ¬μ©νλ©΄ λλ€.
π μ μΈ΅μ μμ±μ ν¨ν΄μ μ¬μ©ν μλ μλλ°, μ΄λ 맀κ°λ³μμ κ°μκ° λ§μμ§λ©΄ ν΄λΌμ΄μΈνΈ μ½λλ₯Ό μμ±νκ±°λ μ½κΈ° μ΄λ ΅λ€.
μ½λλ₯Ό μ½μ λ κ° κ°μ μλ―Έκ° λ¬΄μμΈμ§ νμ νκΈ° μ΄λ ΅κ³ , 맀κ°λ³μκ° λͺκ°μΈμ§ μ£Όμν΄μ μΈμ΄ 보μμΌ νλ€.
κ·Έλ¦¬κ³ ν΄λΌμ΄μΈνΈκ° μ€μλ‘ λ§€κ°λ³μμ μμλ₯Ό λ°κΏ 건λ€μ€λ μ»΄νμΌλ¬λ μμμ±κΈ° μ΄λ ΅κ³ , κ²°κ΅ λ°νμμ μ΄μνκ² λμνκ² λ κ²μ΄λ€.
(μ§κΈμ μμ μΊ‘μ³ νλ©΄κ³Ό κ°μ΄ IDE νΉν μΈν 리μ μ΄μμ μ’ λ μ½κ² νμ ν μ μλλ‘ κΈ°λ₯μ μ 곡ν΄μ£Όκ³ μμ§λ§, μ΄λ κ² μ 곡ν΄μ£Όμ§ μλ IDEλ μμΌλκΉ..)
μμ±μμ 맀κ°λ³μκ° λ§μ λ κ³ λ €ν μ μλ λ λ€λ₯Έ λ°©μμΌλ‘λ μλ°λΉμ¦ ν¨ν΄μ΄ μλ€.
λμ2. μλ°λΉμ¦ ν¨ν΄
μλ°λΉμ¦ ν¨ν΄μ 맀κ°λ³μκ° μλ μμ±μλ‘ κ°μ²΄λ₯Ό λ§λ ν, setter λ©μλλ₯Ό νΈμΆν΄μ μνλ 맀κ°λ³μμ κ°μ μ€μ νλ λ°©μμ΄λ€.
μλ°λΉμ¦ ν¨ν΄μμλ μμ μ μΈ΅μ μμ±μ ν¨ν΄μ λ¨μ μ 보μ΄μ§ μκ³ , μΈμ€ν΄μ€λ₯Ό λ§λ€κΈ° μ¬μμ‘κ³ , κ·Έ κ²°κ³Ό λ μ½κΈ° μ¬μ΄ μ½λκ° λλ€.
μ΄λ κ²λ§ 보면 μλ°λΉμ¦ ν¨ν΄μ΄ μ’μ보μ΄μ§λ§,,, μ‘°κΈλ§ μκ°ν΄λ³΄λ©΄ μλ°λΉμ¦ ν¨ν΄μ μ¬κ°ν λ¨μ μ κ°μ§κ³ μλ€.
μλ°λΉμ¦ κ°μ²΄λ₯Ό μμ±ν΄μΌ νλ€λ©΄ μμ μμ?μ κ°μ΄ νλμ κ°μ²΄λ₯Ό μμ±νλλ° λ©μλλ₯Ό μ¬λ¬ κ° νΈμΆν΄μΌ νκ³ ,
κ°μ²΄κ° μμ ν μμ±λκΈ° μ κΉμ§ μΌκ΄μ± consistencyκ° λ¬΄λμ§ μνμ λμ΄κ² λλ€.
μ μΈ΅μ μμ±μ ν¨ν΄μμλ 맀κ°λ³μλ€μ΄ μ ν¨νμ§ μμ±μμμ μ ν¨μ± 체ν¬λ§ ν΄μ£Όλ©΄ μΌκ΄μ±μ μ μ§ν μ μμλ λ°λ©΄,
μλ°λΉμ¦ ν¨ν΄μμλ κ·Έλ΄ μ μλ€..
μ΄λ κ² μΌκ΄μ±μ΄ 무λμ§λ λ¬Έμ λλ¬Έμ μλ°λΉμ¦ ν¨ν΄μμλ ν΄λμ€λ₯Ό λΆλ³μΌλ‘ λ§λ€ μμκ³ , μ€λ λμμ μμ μ±μ μ»κΈ° μν΄μλ νλ‘κ·Έλλ¨Έκ° μΆκ° μμ μ ν΄μ€μΌ νλ€.