
http://www.refactoring.com/catalog/index.html - Refactoring μ λν΄ κ³μ μ 리λκ³ μλ€.
1. Refactoring μ΄λ 무μμΈκ°? ¶
- νλ‘κ·Έλ¨μ λ΄λΆκ΅¬μ‘°μ‘°μ . μ€μ λ‘ ν΄λΉ μ½λκ° νλ μν μ μμ νμ§ μμΌλ©΄μ λ΄λΆκ΅¬μ‘°λ₯Ό λ ν¨μ¨μ μΌλ‘ μμ νλ μμ
. (μνμ μΈμλΆν΄λ₯Ό μκ°ν΄λ³Ό κ²)
- κΈ°μ‘΄μ "λμμΈ ν μ½λ©' λ²μΉκ³Ό λ°λλλ€. (TestFirstProgramming μμ UnitTest - Refactoring μ΄ λ§λ¬Όλ € λμκ°λ€)
- Refactoring μ νκΈ° μν΄μλ UnitTest codeκ° νμμ μ΄λ€. μΌλ¨ μ²μ Refactoringμ λν κ°λ¨ν μ리λ₯Ό μ΄ν΄νκ³ μΆλ€λ©΄ UnitTest μ½λ μμ΄ ν΄λ μ’μ§λ§, UnitTest codeλ₯Ό μμ±ν¨μΌλ‘μ Refactoring μ λν ν¨κ³Όλ₯Ό λμΌ μ μλ€. (Refactoring μ€ λ³Έλμ μΈλΆκΈ°λ₯μ 건λ리λ μ€μλ₯Ό λ§μ μ μλ€.)
2. Refactoring μ ν¨μΌλ‘μ¨ μ»λ μ΄λ ¶
- μ½λ λμμΈμ ν₯μμν¨λ€.
- μ½λλ₯Ό κΉ¨λνκ² νμ¬ μ΄ν΄νκΈ° μ½κ² ν΄μ€λ€.
- λ²κ·Έ λ°μμ μ°Ύλλ° λμμ€λ€.
- μ’μ λμμΈμΌλ‘μ νλ‘κ·Έλλ° μκ°μ λ¨μΆν΄μ€λ€.
3. Refactoringμ μΈμ νλκ°? ¶
νΉλ³ν λλ₯Ό λ νμλ μλ€. νλλ λλ‘. Don Robert μ The Rule of Three μμΉμ μ μ©ν΄λ μ’μ κ² κ°λ€.
- 무μμΈκ° λ§λ€κ²μ΄λ€. κ·Έλ₯ λ§λ€μ΄λΌ.
- λκ° λΉμ·ν μ½λλ₯Ό λ§λ€ κ²μ΄κ³ , μ€λ³΅λ¨μ΄ μμ κ²½μ°μ λΉμ μ μ£ΌμΆ€ν κ²μ΄λ€. νμ§λ§ μ΄μ¨λ μΌλ¨ μ€λ³΅λλ λ΄μ©μ΄ μλλΌλ λ§λ€μ΄λΌ.
- λ€μ λ λκ° λΉμ·ν μΌμ νλ€. - Refactoringμ ν λμ΄λ€. Refactoring νλΌ.
κ·Έλ¦¬κ³ λ€μκ³Ό κ°μκ²½μ° Refactoringμ ν¨μΌλ‘μ¨ μ΄λμ μ»μ μ μλ€.
- ν¨μλ₯Ό μΆκ°ν λ
- λ²κ·Έλ₯Ό κ³ μΉ νμκ° μμ λ
- Code Review λ₯Ό νλ €κ³ ν λ
- Bad Smell μ΄ λ λ. - Refactoring/BadSmellsInCode
4. Refactoring 곡λΆνκΈ° ¶
Refactoring μ±
μ μ½λ μ¬λλ€μ μν΄. Preface μ 'Who Should Read This Book?' μ 보면 μ±
μ μ½λ λ°©λ²μ΄ μκ° λλ€.
- Refactoringμ΄ λ¬΄μμΈμ§ μκ³ μΆλ€λ©΄ Chapter 1μ μμ λ₯Ό μ½μ΄λκ°λ€.
- μ Refactoringμ ν΄μΌ νλμ§ μκ³ μΆλ€λ©΄ Chapter 1,2λ₯Ό μ½μ΄λΌ.
- μ΄λ€ λΆλΆμ Refactoring ν΄μΌ νλμ§ μ°ΎκΈ° μνλ€λ©΄ Chapter 3λ₯Ό μ½μ΄λΌ.
- μ€μ λ‘ Refactoringμ νκΈ° μνλ€λ©΄ Chapter 1,2,3,4λ₯Ό μ λ
νκ³ RefactoringCatalog λ₯Ό λκ° νμ΄λ³Έλ€. RefactoringCatalogλ μΌμ’
μ referenceλ‘ μ°Έκ³ νλ©΄ λλ€. Guest Chapter (μ μ μ΄μΈμ λ€λ₯Έ μ¬λλ€μ΄ μ°Έμ¬ν λΆλΆ)λ μ½μ΄λ³Έλ€. (νΉν Chapter 15)
7.3. Thread ¶
Refactoring κ³Ό TestDrivenDevelopment λ μΌμ’
μ λ©νν¨ν΄μ΄λ€. (μ¬κΈ°μ κ°μΈμ μΌλ‘ νλ λ μΆκ°νκ³ μΆλ€λ©΄ ResponsibilityDrivenDesign) λκ°μ μΆ©μ€νλ©΄ DesignPattern μΌλ‘ μ λλμ΄μ§λ κ²½μ°κ° κ½€ λ§λ€.
Refactoring μ μμΈλ‘ μ€μν κΈ°μ λ‘ μκ°λλ건 λ°λ‘ Extract Method μ Rename κ³Ό κ΄λ ¨λ Refactoring. κ°μ₯ κ°λ¨νμ¬ μμν΄λ³΄μΌμ§ λͺ¨λ₯΄κ² μ§λ§, κ·Έλ‘μ μ»μ΄μ§λ ν¨κ³Όλ λλ¨νλ€. λ€λ₯Έ Refactoring κΈ°μ λ€μ κ²½μ°λ μΌλ¨ Extract Method μ Rename λ§ μ μ§μΌμ§λ©΄ κ·Έλ§νΌ μ μ©νκΈ° μ¬μμ§λ€κ³ μκ°.
κ°μΈμ μΌλ‘ Refactoring μ μ μ©νλμ€, μμ£Ό μ΄μ©λλ ν
ν¬λμ΄ StructuredProgramming κΈ°λ²μΈ StepwiseRefinement (Rename λ μΌμ’
μ StepwiseRefinement κΈ°μ μ΄λΌ μκ°μ΄ λ λ€)λΌλμ μ μμΈμΌλ ¨μ§ λͺ¨λ₯΄κ² λ€. OOP μ SP λ μνΈλ°°μ μ κ΄κ³κ° μλκΈ°μ. --1002
- VCμ© Refactoring λꡬλ μλμ? C++ μ΄λΌλ μΈμ΄μμ Refactoring μ΄λΌλ κ°λ
μ μ μ©μν€λ €λ©΄ TDD in VC++ μ²λΌ μ½κ° 볡μ‘ν κ³Όμ μ΄ νμνκ² μ§λ§μ;; - μμΈν
Refactoring