Martin Fowler’s definition에 의하면 Refactoring이란
- (noun) a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behaviour
외부에서 관측되는 행동을 제외한 다른 부분을 더 이해하기 쉽거나 효율적으로 바꾸는 것.
- (verb) to reconstruct software by applying a series of refactorings without changing its observable behaviour
외부에서 관측되는 행동을 제외한 다른 부분을 여러 개의 refactoring을 적용하여 재설계하는 것.
즉, 사용자의 관점에서 변하는 것 없이 구조를 쉽거나 효율적으로 재설계하는 것이다.
특히 다음과 같은 Maintainability을 향상시키기 위한 것이다.
- Understandibility
- Adapatibility
- Extensibility
- Complexity (Cohesion and Coupling)
Code Refactoring은 Bad Smell을 탐지하면서부터 시작한다.
여기서 Bad Smell이란 Technically bug는 아니지만 심각한 문제를 유발할 수 있거나 디자인 결함을 가지고 있는 것들이다.
Refactoring은 다음의 과정을 반복하면서 해결하게 된다.
1. choose the worst smell
2. select a refactoring that will address the smell
3. apply the refactoring
특히 이 Refactoring은 Automated test와 함께 하는 것이 좋다.
Automated Test와 함께라면 아래와 같은 과정을 거친다. (TDD !!)
1. make smallest discrete change that will compile, run, and function
2. run existing tests
3. make next smallest discrete change
4. run existing tests again
5. … repeat change + tests
6. when refactoring is in place and all tests run clean, remove the old smelly parallel code
7. once tests run clean after that, done!
Bad Smell과 Technique은 다음 장에서 다루도록 한다.
'Refactoring (리팩토링)' 카테고리의 다른 글
리팩토링(Refactoring) 3. Refactoring Techniques 1. Composing Methods (0) | 2021.04.06 |
---|---|
리팩토링(Refactoring) 2. Bad Smell, Code Smell (코드 스멜) 코드의 악취 (0) | 2021.04.06 |