Abstract
Two distinctly different widely used meanings of the term code refactoring are identified and named:
- Changing how code works, without changing the requirements that it fulfills (refactoring in the weak sense)
- Changing how code is expressed, without changing how it works (refactoring in the strong sense)