Chapter 02 리ν©ν°λ§ μμΉ
- 리ν©ν°λ§ μ μ리ν©ν°λ§μ μ½λλ₯Ό μ΄ν΄νκ³ μμ νκΈ° μ½κ² λ§λλ κ²μ΄ λͺ©μ μ΄λ©°, μ±λ₯ μ΅μ νμλ λͺ©νμ λ°©λ²μ΄ λ€λ₯΄λ€. μ±λ₯ μ΅μ νλ μλ κ°μ μλ§ μ§μ€νλ―λ‘ μ½λκ° λ 볡μ‘ν΄μ§ μ μλ€.
π‘ 리ν©ν°λ§: [λͺ μ¬] μννΈμ¨μ΄μ κ²λ³΄κΈ° λμμ κ·Έλλ‘ μ μ§ν μ±, μ½λλ₯Ό μ΄ν΄νκ³ μμ νκΈ° μ½λλ‘ λ΄λΆ ꡬ쑰λ₯Ό λ³κ²½νλ κΈ°λ²π‘리ν©ν°λ§(νλ€): [λμ¬] μννΈμ¨μ΄μ 걸보기 λμμ κ·Έλλ‘ μ μ§ν μ±, μ¬λ¬ κ°μ§ 리ν©ν°λ§ κΈ°λ²μ μ μ©ν΄μ μννΈμ¨μ΄λ₯Ό μ¬κ΅¬μ±νλ€.
- λ κ°μ λͺ¨μ
μννΈμ¨μ΄ κ°λ° μ 'κΈ°λ₯ μΆκ°'μ '리ν©ν°λ§'μ λͺ νν ꡬλΆνμ¬ μμ νλ κ²μ΄ μ€μνλ€. κΈ°λ₯ μΆκ° μμλ κΈ°μ‘΄ μ½λλ₯Ό 건λλ¦¬μ§ μκ³ μλ‘μ΄ κΈ°λ₯λ§ μΆκ°νλ©°, ν μ€νΈλ₯Ό ν΅κ³Όνλμ§ νμΈνλ€. 리ν©ν°λ§ μμλ μ½λ μ¬κ΅¬μ±μλ§ μ λ νκ³ , κΈ°λ₯ μΆκ°λ νμ§ μλλ€. μΈν°νμ΄μ€ λ³κ²½μ΄ νμν κ²½μ°μλ§ κΈ°μ‘΄ ν μ€νΈλ₯Ό μμ νλ€.
- 리ν©ν°λ§νλ μ΄μ
- μννΈμ¨μ΄ μ€κ³κ° μ’μμ§λ€.
- μννΈμ¨μ΄λ₯Ό μ΄ν΄νκΈ°κ° μ¬μμ§λ€.
- λ²κ·Έλ₯Ό μ½κ² μ°Ύμ μ μλ€.
- νλ‘κ·Έλλ° μλλ₯Ό λμΌ μ μλ€.
- μΈμ 리ν©ν°λ§μ ν΄μΌ ν κΉ?
- μ€λΉλ₯Ό μν 리ν©ν°λ§: κΈ°λ₯μ μ½κ² μΆκ°νκ² λ§λ€κΈ°
- μ΄ν΄λ₯Ό μν 리ν©ν°λ§: μ½λλ₯Ό μ΄ν΄νκΈ° μ½κ² λ§λ€κΈ°
- μ°λ κΈ° μ€κΈ° 리ν©ν°λ§
- κ³νλ 리ν¨ν°λ§κ³Ό μμλ‘ νλ 리ν©ν°λ§
- 보기 μ«μ μ½λλ₯Ό λ°κ²¬νλ©΄ 리ν©ν°λ§ νμ. κ·Έλ°λ° μ μμ±λ μ½λ μμ μλ§μ 리ν©ν°λ§μ κ±°μ³μΌ νλ€.
- 무μΈκ° μμ νλ € ν λλ μμ νκΈ° μ½κ² μ λνκ³ κ·Έλ° λ€μ μ½κ² μμ νμ.
- μ€λ 걸리λ 리ν©ν°λ§
- μ½λ 리뷰μ 리ν©ν°λ§ νμ©νκΈ°
- κ΄λ¦¬μμκ²λ λλΌκ³ λ§ν΄μΌ ν κΉ?
μ ν¨μλ₯Ό μΆκ°νλ €λλ° νμ¬ μ€κ³κ° μ ν©νμ§ μλ€λ©΄ λ¨Όμ 리ν©ν°λ§νκ³ λμ ν¨μλ₯Ό μΆκ°νλ νΈμ΄ λΉ λ₯΄λ€. λ²κ·Έλ₯Ό μμ νλ €λ©΄ νμ¬ μννΈμ¨μ΄μ μλ λ°©μμ μ΄ν΄ν΄μΌνλ€. μ΄λλ 리ν©ν°λ§λΆν° νλ νΈμ΄ κ°μ₯ λΉ λ₯΄λ€. μΌμ μ μ΅μ°μ μΌλ‘ μ¬κΈ°λ κ΄λ¦¬μλ μ΅λν 빨리 λλ΄λ λ°©ν₯μΌλ‘ μ§ννκΈ°λ₯Ό μνλ€. κ·Έλ¦¬κ³ κ΅¬μ μ μΈ λ°©λ²μ κ°λ°μκ° νλ¨ν΄μΌ νλ€. νλ‘ κ°λ°μμκ² μ£Όμ΄μ§ μ무λ μλ‘μ΄ κΈ°λ₯μ λΉ λ₯΄κ² ꡬννλ μ§μ΄κ³ , κ°μ₯ λΉ λ₯Έ λ°©λ²μ 리ν©ν°λ§μ΄λ€. κ·Έλμ 리ν©ν°λ§λΆν° νλ€. - 리ν©ν°λ§ νμ§ λ§μμΌ ν λ
λ΄λΆ λμμ μ΄ν΄ν΄μΌ ν μμ μ 리ν©ν°λ§ν΄μΌ ν¨κ³Όλ₯Ό μ λλ‘ λ³Ό μ μλ€.3μ λ²μΉ 1. μ²μμλ κ·Έλ₯ νλ€. 2. λΉμ·ν μΌμ λ λ²μ§Έλ‘ νκ² λλ©΄ (μ€λ³΅μ΄ μκ²Όλ€λ μ¬μ€μ λΉν©μ€λ½κ² μ§λ§) μΌλ¨ κ³μ μ§ν νλ€. 3. λΉμ·ν μΌμ μΈ λ²μ§Έ νκ² λλ©΄ 리ν©ν°λ§ νλ€.
- 리ν©ν°λ§ μ κ³ λ €ν λ¬Έμ
- μ κΈ°λ₯ κ°λ° μλ μ ν
- 리ν©ν°λ§μ κΆκ·Ήμ μΈ λͺ©μ μ κ°λ° μλλ₯Ό λμ¬μ, λ μ μ λ Έλ ₯μΌλ‘ λ λ§μ κ°μΉλ₯Ό μ°½μΆνλ κ²μ΄λ€.
- μ½λ μμ κΆ
- λΈλμΉ
- ν μ€ν
- λ κ±°μμ½λ
- λ°μ΄ν°λ² μ΄μ€
λ°μ΄ν°λ² μ΄μ€ 리ν©ν°λ§μ νλ‘λμ νκ²½μ μ¬λ¬ λ¨κ³λ‘ λλ μ 릴리μ€νλ κ²μ΄ λμ²΄λ‘ μ’λ€λ μ μμ λ€λ₯Έ 리ν©ν°λ§κ³Ό λ€λ₯΄λ€. μ΄λ κ² νλ©΄ νλ‘λμ νκ²½μμ λ¬Έμ κ° μκ²Όμ λ λ³κ²½μ λλ리기 μ½λ€. μ΄λ₯Όν λ©΄ νλ μ΄λ¦μ λ°κΏ λ 첫 λ²μ§Έ 컀λ°μμλ μλ‘μ΄ λ°μ΄ν°λ² μ΄μ€ νλλ₯Ό μΆκ°λ§ νκ³ μ¬μ©νμ§λ μλλ€. κ·Έλ° λ€μ κΈ°μ‘΄ νλμ μ νλλ₯Ό λμμ μ λ°μ΄νΈνλλ‘ μ€μ νλ€. κ·Έλ€μμλ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ½λ ν΄λΌμ΄μΈνΈλ€μ μ νλλ₯Ό μ¬μ©νλ λ²μ μΌλ‘ μ‘°κΈμ© κ΅μ²΄νλ€. μ΄ κ³Όμ μμ λ°μνλ λ²κ·Έλ ν΄κ²°νλ©΄μ ν΄λΌμ΄μΈνΈ κ΅μ²΄ μμ μ λͺ¨λ λλλ€λ©΄, λλ νμκ° μμ΄μ§ μμ νλλ₯Ό μμ νλ€. μ΄λ κ² λ°μ΄ν°λ² μ΄μ€λ₯Ό λ³κ²½νλ λ°©μμ λ³λ ¬ μμ μ μΌλ°μ μΈ μλ€.
- μ κΈ°λ₯ κ°λ° μλ μ ν
- 리ν©ν°λ§, μν€ν
μ², μ κ·Έλ(YAGNI)
리ν©ν λ§μ ν΅ν΄ νμ¬κΉμ§ νμ ν μꡬμ¬νμ ν΄κ²°νλ μννΈμ¨μ΄λ₯Ό ꡬμΆνκ³ , λ³κ²½μ μ μ°νκ² λμνκΈ° μν΄ μ€κ³λ₯Ό κ°κ²°νκ³ μ μ§μ μΌλ‘ μ§ννλ λ°©μμ YAGNIλ‘ λΆλ₯Έλ€. 리ν©ν λ§μ 미루면 μ΄λ €μμ§λ―λ‘ μ μ°μ± λ©μ»€λμ¦μ κ²μ¦ ν μΆκ°ν΄μΌ νλ€.
- 리ν©ν°λ§κ³Ό μννΈμ¨μ΄ κ°λ° νλ‘μΈμ€μκ° ν
μ€νΈ μ½λ, μ§μμ ν΅ν©, 리ν©ν°λ§μ΄λΌλ μΈκΈ°λ²μ μλ‘ κ°λ ₯ν μμΉν¨κ³Όλ₯Ό λ°ννλ€.
리ν©ν°λ§μ 첫 λ²μ§Έ ν λλ μκ° ν μ€νΈ μ½λλ€. λν νμΌλ‘ κ°λ°νλ©΄μ 리ν©ν°λ§μ νλ €λ©΄ κ° νμμ΄ λ€λ₯Έ μ¬λμ μμ μ λ°©ν΄νμ§ μμΌλ©΄μ μΈμ λ μ§ λ¦¬ν©ν°λ§ ν μ μμ΄μΌ νλ€.
- 리ν©ν°λ§κ³Ό μ±λ₯
리ν©ν°λ§μ μ±λ₯ μ’μ μννΈμ¨μ΄λ₯Ό λ§λλ λ° κΈ°μ¬νλ€. λ¨κΈ°μ μΌλ‘ 보면 리ν©ν°λ§ λ¨κ³μμλ μ±λ₯μ΄ λλ €μ§ μλ μλ€. νμ§λ§ μ΅μ ν λ¨κ³μμ μ½λλ₯Ό νλνκΈ° ν¨μ¬ μ¬μμ§κΈ° λλ¬Έμ κ²°κ΅ λ λΉ λ₯Έ μνλμ¨μ΄λ₯Ό μ»κ² λλ€.
- 리ν©ν°λ§μ μ λ
리ν©ν°λ§μ μλ 컀λνκ³Ό μΌνΈ λ²‘μ΄ μ€λͺ°ν ν¬λ₯Ό νμ©ν΄ κ°λ°νλ©΄μ μ€μμ±μ κΉ¨λ¬μκ³ , μ€λͺ°ν ν¬μ μλμ μΈ νκ²½κ³Ό κ°μ²΄ μ§ν₯ μΈμ΄μ νΉμ§μ ν΅ν΄ 리ν©ν°λ§μ΄ μμ°μ±μ λμ΄λ λ° ν° μν μ νλ€λ κ²μ μκ² λμλ€.
- 리ν©ν°λ§μ μλν
μλ 리ν©ν°λ§μ 리ν©ν°λ§μ μ§μνλ λκ΅¬κ° λ±μ₯ν κ°μ₯ ν° λ³νμ΄λ€. μλ 리ν©ν°λ§μ κ°λ° λκ΅¬κ° μ²λ¦¬νλ©° μμ μ μ΄λ€. νμ¬λ μλν°λ λ 립 λꡬμμλ μλ 리ν©ν°λ§μ΄ ννκ² μ 곡λλ©°, μ μ νμ μΈμ΄λ₯Ό μ¬μ©νλ©΄ λ μμ νκ² κ΅¬νν μ μλ€. IDEλ₯Ό μ¬μ©νλ κ²μ΄ ν¨μ¨μ μ΄λ©°, μΈμ΄ μλ² κΈ°μ λ λμ΄λκ³ μλ€.
LIST
'π > μμ π' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [Refactoring] Chapter 03. Bad Smells in Code (μ½λμμ λλ μ μ·¨) (1) | 2024.02.02 |
|---|---|
| [Refactoring] Chapter 01. Refactoring : A first_example (리ν©ν°λ§: 첫 λ²μ§Έ μμ) (0) | 2024.01.11 |