Sources Catalog Mailing List Atom Feed martinFowler.com

Information about Refactoring


Books | General Sites | Podcasts | Book Supplements | PhD Theses | People

Books

There aren't many books on refactoring, but those that exist are good place for getting a foundation on refactoring ideas.

Refactoring
The original book on refactoring. I wrote this to try to spread the ideas of refactoring beyond the relatively small group of people who originally developed the ideas. The book includes an introduction to refactoring by a short example, a catalog of refactorings, and supplemental chapters discussing the role of refactoring.
Refactoring Workbook
Bill Wake's refactoring workbook leads through how to think about refactoring. It pays special attention to recognizing code smells and how to deal with them. This is an excellent choice for people like to learn by doing.
Refactoring to Patterns
Josh Kerievsky wrote book that further explores the relationship between refactoring and patterns. It particularly focuses on how to evolve steadily towards patterns in a design.
Refactoring Databases
Databases introduce some particular issues in refactoring. This book goes through database refactoring in detail so you can do evolutionary design with databases too.
Professional Refactoring in Visual Basic
Refactoring book targeting Visual Basic. I haven't got it, so I can't comment on it further.
CoreJ2EE Patterns
Contains several refactorings targeted at J2EE
Reengineering Patterns
Talks about the broader context of reengineering that refactoring can play a role in.

General Sites

More sites that talk about refactoring in general.

Refactoring Research Portal
A portal on refactoring research. It contains info about upcoming workshops and seminars on refactoring, as well as the active researchers in the community.
Yahoo Mailing List
A mailing list to discuss refactoring topics. The list is mirrored by gmane.
Thumbnails
Sven Gorts has put together a visual technique for describing refactorings, particularly the larger scale kind.
Smells
Gene Garcia has put online a copy of the smells table from the refactoring book. The smells link to the online refactoring catalog.
Refactoring Bliki
This section of my bliki focuses on refactoring.
Database Refactoring
Refactoring can also be applied to databases, although this area has its own complications. I discussed the basic principles behind evolutionary database design in an article with Pramod Sadalage, Scott Ambler also maintains a site on agile data techniques.
Ward's Wiki
The original wiki contains quite a lot of pages on refactoring.
Refactoring in C
In recent years, Alejandro Garrido has been working on a refactory for C as part of a doctoral thesis at UIUC (where else?) One the biggest challenges of this project is dealing with the pre-processor. Her site includes papers and on-going thesis documentation on her progress so far.

Podcasts

If you like podcasts, Software Engineering Radio has a couple of nice podcasts on refactoring with Eberhard Wolff interviewing Martin Lippert.

Refactoring Part 1
A general introduction to refactoring
Refactoring Part 2
Discusses the issues involved in larger scale refactorings.

Book Supplements

There are various supplements to the original refactoring book available on the web. Several people have asked about the source code for the refactorings. I'm afraid I don't have the source code in any edible form.

Errata
Like any human, I make mistakes. Fortunately some careful readers spot them and tell me about them. Here's the list I know about.
Long Example
One of the frustrating parts of writing this book is that I threw away more pages than are in the book. Here's one of chapters that didn't cut it: a 98 page example of refactorings. Just right for a really sleepless night!
Python Chapter 1
Luciano Ramalho has produced a Python transcription of the example from chapter 1. You get to see all of the refactorings with the distinct flavor of Python.
C# Chapter 1
Bryant Smith has put together a website with a C# version of the opening example from the book.
Chapter 1 Code
I never got around to putting the code for the initial example in chapter 1 online. David Koontz has put example code together and made it available.
Energy Example Code
Jana Köhler of the Lucerne University of Applied Sciences and Art has put together an Eclipse project with all the code from the energy example above. She uses it as a teaching example and says the students love the course.

PhD Theses

Much of the original work on refactoring was developed as part of academic doctoral studies.

Bill Opdyke
This was the first thesis on refactoring.
Don Roberts
"Practical Analysis for Refactoring"
Márcio Cornélio
"Refactorings as Formal Refinements"

People

Don Roberts
A co-author of the original refactoring browswer in Smalltalk. He's also one of the refactoring doctors.
Frank Tip
Frank is a researcher with IBM who has done a fair bit of refactoring work in conjunction with the Eclipse project.
Bill Wake
The author of the refactoring workbook.
Bill Opdyke
The author of the first PhD on refactoring.
Mel Ó Cinnéide
A lecturer at University College Dublin who is interested in composite refactorings using Java.
Don Batory and Lance Tokuda
have been doing some research on refactoring. They don't have a single web page to summarize their work in this area, but they recommend this pdf paper as a recent overview.
Bill Griswold
If you look at any work in program restructuring, you're bound to come across his work. He's been researching program restructuring techniques for over a decade.
Danny Dig
A professor at UIUC who has been working on refactoring for concurrency, and contributes to Eclipse and NetBeans refactoring engines