Refactoring is a systematic process of improving code without creating new functionality that can transform a mess into clean code and simple design.
Dirty code is result of inexperience multiplied by tight deadlines, mismanagement, and nasty shortcuts taken during the 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