Code is Cheap, Thinking is Expensive

Purposes of Refactoring

Refactoring has several purposes

Changing the Architecture

Improving Maintainability

Improving Testability