E D R , A S I H C RSS

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 원칙을 μ μš©ν•΄λ„ 쒋을 것 κ°™λ‹€.
  1. 무엇인가 λ§Œλ“€κ²ƒμ΄λ‹€. κ·Έλƒ₯ λ§Œλ“€μ–΄λΌ.
  2. λ­”κ°€ λΉ„μŠ·ν•œ μ½”λ“œλΌ λ§Œλ“€ 것이고, 쀑볡됨이 μžˆμ€ κ²½μš°μ— 당신은 μ£ΌμΆ€ν•  것이닀. ν•˜μ§€λ§Œ μ–΄μ¨Œλ“  일단 μ€‘λ³΅λ˜λŠ” λ‚΄μš©μ΄ μžˆλ”λΌλ„ λ§Œλ“€μ–΄λΌ.
  3. λ‹€μ‹œ 또 λ­”κ°€ λΉ„μŠ·ν•œ 일을 ν•œλ‹€. - Refactoring을 ν•  λ•Œμ΄λ‹€. Refactoring ν•˜λΌ.

Three Strike 법칙은 μ™Έμš°κΈ° μ‰¬μ›Œμ„œ 처음 Refactoring 을 ν•˜λŠ” μ‚¬λžŒλ“€μ—κ² μ λ‹Ήν•˜λ‹€. ν•˜μ§€λ§Œ, μ € 법칙은 주둜 쀑볡이 일어날 λ•Œμ˜ 경우이고, Rename Method/Field/Variable 같은 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)

그리고 Refactoring 을 μ΄ν•΄ν•˜λŠ”λ° ExtremeProgramming 을 μ΄ν•΄ν•˜λ©΄ 도움이 될 것이닀.

5. Refactoring κ΄€λ ¨ ν† λ‘ 

6. Refactoring κ³Ό Test Code

7.1. Chapter 13 Refactoring Reuse, and Reality

7.2. Chapter 14 Refactoring Tools

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++ 처럼 μ•½κ°„ λ³΅μž‘ν•œ 과정이 ν•„μš”ν•˜κ² μ§€λ§Œμš”;; - μž„μΈνƒ
- λ‹·λ„· λ‹€μŒ 버젼에 μΆ”κ°€λœλ‹€κ³  μ–΄λ””μ„œ λ³Έκ±° 같은데.. -인수
- Visual Studio 2005 Preview 버전 κ΅¬ν•΄μ„œ κΉ”μ•„λ΄€λŠ”λ°.. κ±°κΈ° μ—†μ—ˆλ˜κ²ƒ κ°™μ•˜λŠ”λŽ…..;; ν”ŒλŸ¬κ·ΈμΈ ν˜•μ‹μœΌλ‘œ VS7 μ΄λ‚˜ 7.1μ—μ„œ Refactoring ν• μˆ˜ 있게 ν•΄μ£ΌλŠ” νˆ΄μ€ κ΅¬ν–ˆμŒ.. - μž„μΈνƒ


Refactoring
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:27:49
Processing time 0.0317 sec