13μ₯. λμμ± π¦
λμμ±μ κ²°ν©(coupling)μ μμ λ μ λ΅μ΄λ€. μ¦, 무μκ³Ό μΈμ λ₯Ό λΆλ¦¬νλ μ λ΅μ΄λ€.
1. λμμ±κ³Ό κ΄λ ¨λ μΌλ°μ μΈ λ―Έμ κ³Ό μ€ν΄ π§
- λμμ±μ νμ μ±λ₯μ λμ¬μ€λ€.
λμμ±μ λλ‘ μ±λ₯μ λμ¬μ€λ€. λκΈ° μκ°μ΄ μμ£Ό κΈΈμ΄ μ¬λ¬ μ€λ λκ° νλ‘μΈμλ₯Ό 곡μ ν μ μκ±°λ, μ¬λ¬ νλ‘μΈμκ° λμμ μ²λ¦¬ν λ 립μ μΈ κ³μ°μ΄ μΆ©λΆν λ§μ κ²½μ°λ©λ μ±λ₯μ΄ λμμ§λ€. μ΄λ μͺ½λ μΌμμ μΌλ‘ λ°μνλ μν©μ μλλ€. - λμμ±μ ꡬνν΄λ μ€κ³λ λ³νμ§ μλλ€.
λ¨μΌ μ€λ λ μμ€ν κ³Ό λ€μ€ μ€λ λ μμ€ν μ μ€κ³κ° νμ΄νκ² λ€λ₯΄λ€. μΌλ°μ μΌλ‘ 무μκ³Ό μΈμ λ₯Ό λΆλ¦¬νλ©΄ μμ€ν κ΅¬μ‘°κ° ν¬κ² λ¬λ¦¬μ§λ€. - μΉ λλ EJB 컨ν
μ΄λλ₯Ό μ¬μ©νλ©΄ λμμ±μ μ΄ν΄ν νμκ° μλ€.
μ€μ λ‘λ 컨ν μ΄λκ° μ΄λ»κ² λμνλμ§, μ΄λ»κ² λμ μμ , λ°λλ½ λ±κ³Ό κ°μ λ¬Έμ λ₯Ό νΌν μ μλμ§λ₯Ό μμμΌλ§ νλ€.
2. λμμ±κ³Ό κ΄λ ¨λ νλΉν λͺ κ°μ§ μκ° π’
- λμμ±μ λ€μ λΆνλ₯Ό μ λ°νλ€. μ±λ₯ μΈ‘λ©΄μμ λΆνκ° κ±Έλ¦¬λ©΄, μ½λλ λ μ§μΌνλ€.
- λμμ±μ 볡μ‘νλ€. κ°λ¨ν λ¬Έμ λΌλ λμμ±μ 볡μ‘νλ€.
- μΌλ°μ μΌλ‘ λμμ± λ²κ·Έλ μ¬ννκΈ° μ΄λ ΅λ€. κ·Έλμ μ§μ§ κ²°ν¨μΌλ‘ κ°μ£Όλμ§ μκ³ μΌνμ± λ¬Έμ λ‘ μ¬κ²¨ 무μνκΈ° μ½λ€.
- λμμ±μ ꡬννλ €λ©΄ νν κ·Όλ³Έμ μΈ μ€κ³ μ λ΅μ μ¬κ³ ν΄μΌ νλ€.
3. λμμ± λ¬Έμ λ₯Ό λ°©μ§νκΈ° μν μ¬λ¬ κ°μ§ μμΉκ³Ό κΈ°μ λ€ πͺ
- λμμ± μ½λλ λ€λ₯Έ μ½λμ λΆλ¦¬νλΌ
μλͺ» ꡬνν λμμ± μ½λλ λ³μλ³ λ°©μμΌλ‘ μ€ν¨νλ€. μ£Όλ³μ μλ λ€λ₯Έ μ½λκ° λ°λͺ©μ μ‘μ§ μλλΌλ λμμ± νλλ§μΌλ‘λ μΆ©λΆν μ΄λ ΅λ€. - μλ£λ₯Ό μΊ‘μν(encapsulation)νλΌ. 곡μ μλ£λ₯Ό μ΅λν μ€μ¬λΌ
κ°μ²΄ νλλ₯Ό 곡μ ν ν λμΌ νλλ₯Ό μμ νλ λ μ€λ λκ° μλ‘ κ°μνλ©΄ μμμΉ λͺ»ν κ²°κ³Όλ₯Ό λ΄λλλ€. μ΄λ° λ¬Έμ λ₯Ό ν΄κ²°νλ λ°©μμΌλ‘ 곡μ κ°μ²΄λ₯Ό μ¬μ©νλ μ½λ λ΄ μκ³μμ(critical section)μ synchronized ν€μλλ‘ λ³΄νΈνλΌκ³ κΆμ₯νλ€. μ΄λ° μκ³μμμ μλ₯Ό μ€μ΄λ κΈ°μ μ΄ μ€μνλ€. - μλ£ μ¬λ³Έμ μ¬μ©νλΌ
곡μ μλ£λ₯Ό μ€μ΄λ €λ©΄ μ²μλΆν° 곡μ νμ§ μλ λ°©λ²μ΄ μ μΌ μ’λ€. μ΄λ€ κ²½μ°μλ κ°μ²΄λ₯Ό 볡μ¬ν΄ μ½κΈ° μ μ©μΌλ‘ μ¬μ©νλ λ°©λ²μ΄ κ°λ₯νλ€. μ΄λ€ κ²½μ°μλ κ° μ€λ λκ° κ°μ²΄λ₯Ό 볡μ¬ν΄ μ¬μ©ν ν ν μ€λ λκ° ν΄λΉ μ¬λ³Έμμ κ²°κ³Όλ₯Ό κ°μ Έμ€λ λ°©λ²λ κ°λ₯νλ€. - μ€λ λλ κ°λ₯ν λ
립μ μΌλ‘ ꡬννλΌ.
μμ λ§μ μΈμμ μ‘΄μ¬νλ μ€λ λλ₯Ό ꡬννλ€. μ¦, λ€λ₯Έ μ€λ λμ μλ£λ₯Ό 곡μ νμ§ μλλ€. κ° μ€λ λλ ν΄λΌμ΄μΈνΈ μμ² νλλ₯Ό μ²λ¦¬νλ€. λͺ¨λ μ 보λ λΉκ³΅μ μΆμ²μμ κ°μ Έμ€λ©° λ‘컬 λ³μμ μ μ₯νλ€. κ·Έλ¬λ©΄ λ€λ₯Έ μ€λ λμ λκΈ°νν νμκ° μμΌλ―λ‘ κ° μ€λ λλ μΈμμ μμ λ§ μλ λ―μ΄ λμκ° μ μλ€. - μΈμ΄κ° μ 곡νλ ν΄λμ€λ₯Ό κ²ν νλΌ
μ€λ λ νκ²½μ μμ ν 컬λμ μ μ¬μ©νλ€. μλ°μμλ java.util.concurrent, java.util.concurrent.atomic, java.util.concurrent.locksλ₯Ό μ΅νμ. - 곡μ κ°μ²΄ νλμλ λ©μλ νλλ§ μ¬μ©νλΌ
λκΈ°ννλ λ©μλ μ¬μ΄μ μμ‘΄μ±μ΄ μ‘΄μ¬νλ©΄ λμμ± μ½λμ μ°Ύμλ΄κΈ° μ΄λ €μ΄ λ²κ·Έκ° μκΈ΄λ€. - λκΈ°ννλ λΆλΆμ μ΅λν μκ² λ§λ€μ΄λΌ
μλ°μμ synchronized ν€μλλ₯Ό μ¬μ©νλ©΄ λ½μ μ€μ νλ€. κ°μ λ½μΌλ‘ κ°μΌ λͺ¨λ μ½λ μμμ ν λ²μ ν μ€λ λλ§ μ€νμ΄ κ°λ₯νλ€. λ½μ μ€λ λλ₯Ό μ§μ°μν€κ³ λΆνλ₯Ό κ°μ€μν¨λ€. κ·Έλ¬λ―λ‘ μ¬κΈ°μ κΈ°μ synchronized λ¬Έμ λ¨λ°νλ μ½λλ λ°λμ§νμ§ μλ€. λ°λ©΄, μκ³μμ(critical section)μ λ°λμ 보νΈν΄μΌ νλ€. λ°λΌμ, μ½λλ₯Ό 지 λλ μκ³ μμμ μλ₯Ό μ΅λν μ€μ¬μΌ νλ€.
'π κ°λ° μμ > ν΄λ¦° μ½λ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
ν΄λ¦° μ½λ(Clean Code) - 14μ₯, 15μ₯, 16μ₯, 17μ₯ (0) | 2023.01.14 |
---|---|
ν΄λ¦° μ½λ(Clean Code) - 11μ₯, 12μ₯ (0) | 2023.01.11 |
ν΄λ¦° μ½λ(Clean Code) - 10μ₯ (0) | 2023.01.11 |
ν΄λ¦° μ½λ(Clean Code) - 8μ₯, 9μ₯ (0) | 2023.01.10 |
ν΄λ¦° μ½λ(Clean Code) - 7μ₯ (0) | 2023.01.10 |