Information about Refactoring
Books | General Sites | Podcasts | Book Supplements | PhD Theses | People
There aren't many books on refactoring, but those that exist
are good place for getting a foundation on refactoring
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
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
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
book targeting Visual Basic. I haven't got it, so I can't comment
on it further.
- CoreJ2EE Patterns
several refactorings targeted at J2EE
- Reengineering Patterns
- Talks about
the broader context of reengineering that refactoring can play a
More sites that talk about refactoring in general.
- Refactoring Research
- 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.
- Sven Gorts has
put together a visual technique for describing refactorings,
particularly the larger scale kind.
Garcia has put online a copy of the smells table from the refactoring
book. The smells link to the online refactoring catalog.
- Refactoring Bliki
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
original wiki contains quite a lot of pages on
- Refactoring in C
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.
If you like podcasts, Software Engineering Radio has a couple
of nice podcasts on refactoring with Eberhard Wolff interviewing Martin
- Refactoring Part 1
general introduction to refactoring
- Refactoring Part 2
- Discusses the issues involved in larger scale refactorings.
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.
Like any human, I make mistakes. Fortunately some careful
readers spot them and tell me about them. Here's the list I know
- 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
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
Smith has put together a website with a C# version of the
opening example from the book.
- Chapter 1 Code
never got around to putting the code for the initial example in
chapter 1 online. David Koontz has put example code together and made
- Energy Example Code
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.
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
Analysis for Refactoring"
- Márcio Cornélio
- "Refactorings as Formal Refinements"
- 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
- Mel Ó Cinnéide
- A lecturer at
University College Dublin who is interested in composite
refactorings using Java.
- Don Batory and Lance Tokuda
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
- Danny Dig
professor at UIUC who has been working on refactoring for concurrency,
and contributes to Eclipse and NetBeans refactoring engines