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.
- 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.
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.