Refactoring is a key skill in developing software. These resources can help you improve.
If you just want practice with refactoring, choose some Exercises. If you’re just starting out, consider the E-Learning or Books section.
Related Resources: BDD, TDD (Test-Driven Development), CI/CD (Continuous Integration / Continuous Delivery).
[Disclosure: Note that I wrote some of the material mentioned below, and I work for Industrial Logic.]
Exercises
- “Gilded Rose Refactoring Kata” [multiple languages]
- “Refactoring Challenge: The Amazing Maze” [Java]
- “Tennis Refactoring Kata” [multiple languages]
- “Video Store Refactoring” [Java]
E-Learning
- Industrial Logic’s Code Smells [multiple languages]
- Industrial Logic’s Refactoring [multiple languages]
Books
If you have to pick one, go with Martin Fowler’s Refactoring: Improving the Design of Existing Code.
- Ambler, Scott W., and Pramod J. Sadalage. Refactoring Databases: Evolutionary Database Design, Addison-Wesley, 2006.
- Ellnestam, Ola, and Daniel Brolund. The Mikado Method, Manning, 2014.
- Feathers, Michael. Working Effectively with Legacy Code, Prentice-Hall, 2004. [multiple languages]
- Fields, Jay, et al. Refactoring: Ruby Edition, Addison-Wesley, 2009. [Ruby]
- Fowler, Martin, et al. Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999. [Java examples but mostly language-independent]
- Kerievsky, Joshua. Refactoring to Patterns, Addison-Wesley, 2005. [Java]
- Wake, William. Refactoring Workbook, Addison-Wesley, 2003. [Java]
- Wake, William, and Kevin Rutherford. Refactoring in Ruby, Addison-Wesley, 2009. [Ruby]
Web Sites
- http://martinfowler.com/tags/refactoring.html
- http://refactoring.com
- http://xp123.com/articles/tag/refactoring/
Web Articles
- Industrial Logic, “Smells to Refactorings Cheat Sheet“.
Tools
- Eclipse [Java]
- JetBrains’ IntelliJ IDEA [Java]
- JetBrains’ ReSharper [Visual Studio plugin for C#]
- Microsoft Visual Studio [C#]
[I welcome further suggestions of resources you’ve found useful, provided they’re something I (or a friend) can review before adding them here.]