Code Refactoring Resources

Martin Fowler defined refactoring as a ” disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior”. In the days of Agile development where code is delivered after one or two week cycles, you start quickly to deal with “legacy” code, what was know as “maintenance” for projects that had longer delivery time frames. Refactoring is mostly linked to code but the term is also widely used for every restructuring effort: database definition code, testing scripts, software architecture or development process.

I am sure to forget some precious resources in this overview, so do not hesitate to add some pointer in the comments (no commercial tools, thank you). Some of these resources are language specific (Java, Ruby, .Net, Python, PHP and even Fortran) but you will also find global perspectives that are above the code level.

Code Refactoring Resources

Web Sites

Wikipedia refactoring page
Martin Fowler’s homepage about refactoring
Wiki Pages About Refactoring
Mikado Method for Large Scale Refactoring – Free draft for review
Refactoring Databases – Evolutionary Database Design
Refactoring To Patterns Catalog
Refactor my code
OODBMS Schema Refactoring Catalogue
Fortran Refactorings


Code Smells
Strategies for refactoring untestable PHP code
A Developers’ Guide to Refactoring Databases
Refactoring Large Software Systems
Refactoring Automated Functional Test Scripts with iTest2
Easy Database Refactoring
Smells to Refactorings Quick Reference Guide
Refactoring Java Code
Refactoring for Python 3
Refactoring Your Rails Application


Refactoring a Legacy Java Application to Rails
Refactoring Ruby Apps
Removing Duplication by Refactoring
How Do I Refactor my Code in Visual Studio? Part 1
How Do I Refactor my Code in Visual Studio? Part 2
Refactoring Test Code
Refactor Java Method
Refactoring in Eclipse with a Closure Example
Refactoring Functionality into a Library
Refactoring to a System of Systems


Refactoring: Improving the Design of Existing Code by Martin Fowler, Kent Beck, John Brant and William Opdyke
Refactoring to Patterns by Joshua Kerievsky
Refactoring: Ruby Edition Jay Fields by Jay Fields, Shane Harvie, Martin Fowler, Kent Beck
Refactoring Databases: Evolutionary Database Design by Scott J Ambler and Pramodkumar J. Sadalage
Professional Refactoring in C# & ASP.NET by Danijel Arsenovski
xUnit Test Patterns: Refactoring Test Code by Gerard Meszaros
Refactoring in Large Software Projects: Performing Complex Restructurings Successfully by Martin Lippert and Stephen Roock

Open Source Tools

Reek – Refactoring for Ruby
Ropeide, a python refactoring IDE
Wrangler is an interactive refactoring tool for Erlang
ExtC – Java Extract Class refactoring
Refactoring Plugin for Eclipse
Chrysalis – A tool for XML Refactoring
Cpparch – Tools for improving C++ program architecture
F# Refactor


  1. Pingback:

  2. Pingback: ??????? «???????? ?????». ?????? 3 « XP Injection

Comments are closed.