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.
[Disclosure: Note that I wrote some of the material mentioned below, and I work for Industrial Logic.]
Newest entries are bolded.
- “Gilded Rose Refactoring Kata” [multiple languages]
- “Refactoring Challenge: The Amazing Maze” [Java]
- “Tennis Refactoring Kata” [multiple languages]
- “Video Store Refactoring” [Java]
- Industrial Logic’s Code Smells [multiple languages]
- Industrial Logic’s Code Katas – includes the Gilded Rose exercise with a video solution [Java]
- Industrial Logic’s Refactoring [multiple languages]
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]
- Industrial Logic, “Smells to Refactorings Cheat Sheet“.
- Zuill, Woody (with Llewellyn Falco). “Code Excellence For The Average Programmer – video of a session “Practical Refactoring, 2-Minutes to Better Code”.
- Eclipse [Java]
- JetBrains’ IntelliJ IDEA [Java]
- JetBrains’ ReSharper [Visual Studio plugin for C#]
- JetBrains’ RubyMine [Ruby]
- 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.]