Refactoring is a systematic process of improving code without creating new functionality that can transform a mess into clean code and simple design.
While dirty code is often result of laziness and incompetence, it can also pile-up due to shortcuts taken during development process.
Clean code is code that is easy to read, understand and maintain. Clean code makes software development predictable and increases the quality of a resulting product.
Performing refactoring step-by-step and running tests after each change are key elements of refactoring that make it predictable and safe.
Code smells are indicators of problems that can be addressed during refactoring. Code smells are easy to spot and fix, but they may be just symptoms of a deeper problem with code.
Refactoring techniques describe actual refactoring steps. Most refactoring techniques have their pros and cons. Therefore, each refactoring should be properly motivated and applied with caution.
21 code smells, 66 refactorings
Interactive examples in Java/C#/PHP
No time limits. Study at your own pace