
Refactoring: Improving the Design of Existing Code
Martin Fowler's catalog of small, safe changes to improve code design
- #9 of 11 in best programming books
- Paid
Ranked 9 of 11 in best programming books
A catalog of around seventy small, behavior-preserving refactorings, with a clear process and advice on testing. It is about improving existing code, so it complements The Pragmatic Programmer rather than replacing it.
Best for Improving the design of existing code
About Refactoring: Improving the Design of Existing Code
Fowler presents refactoring as a controlled technique for improving the design of existing code, applying small behavior-preserving changes that add up to a large effect. The book opens with a worked example, then covers the process, the code smells that suggest refactoring and the role of testing. Most of its length is a catalog of around seventy refactorings, each with its motivation and mechanics.
The second edition, published in 2018, is the edition the author's site describes in detail, and it lists the changes from the first edition. The book suits working developers who maintain existing code, and it pairs well with The Pragmatic Programmer, which covers the wider craft of software development.
Key features
- Catalog of refactorings
- Code smells
- Testing and refactoring
- Second edition, 2018
Strengths
- Catalog of around seventy refactorings
- Explains code smells and the role of testing
- Small, behavior-preserving steps
Limits
- Focused on improving existing code, not new systems
- Dense for readers who have not refactored before
Where Refactoring: Improving the Design of Existing Code ranks
How Refactoring: Improving the Design of Existing Code compares
| Product | Score | Price | Formats | Level | Free to read online | Latest edition | Main focus |
|---|---|---|---|---|---|---|---|
| #7 | 88.5 | Paid | Intermediate | No | 2nd edition | Idiomatic, effective Python code | |
| #8 | 88.0 | Free | Read online | Beginner | Yes | Updated for Rust 1.97 | The Rust language and ownership |
| #9 | 86.5 | Paid | Intermediate | No | 2nd edition, 2018 | Improving code design in small, safe steps | |
| #10 | 83.5 | Free | Read online, Print | Beginner | Yes | 3rd edition | Python for complete beginners |
| #11 | 80.5 | Free | Read online, PDF, EPUB, Kindle, Print | Beginner | Yes | 3rd edition, April 2025 | Python scripts for everyday tasks |
The full comparison table for best programming books has all 11 products.
Alternatives to Refactoring: Improving the Design of Existing Code
All 10 alternatives
Designing Data-Intensive ApplicationsMartin Kleppmann's book on reliable, scalable and maintainable data systems
The Pragmatic Programmer, 20th Anniversary EditionPractical software craft advice from David Thomas and Andrew Hunt
Structure and Interpretation of Computer ProgramsHas a free option.
Crafting InterpretersHas a free option.
Eloquent JavaScript, 4th EditionHas a free option.
Software Engineering at GoogleHas a free option.
Questions about Refactoring: Improving the Design of Existing Code
- Is Refactoring: Improving the Design of Existing Code free?
- Refactoring: Improving the Design of Existing Code is a paid product (paid). Print edition sold by booksellers; price varies by seller.
- Which formats is Refactoring: Improving the Design of Existing Code available in?
- Refactoring: Improving the Design of Existing Code is offered as Print.
- What is Refactoring: Improving the Design of Existing Code best for?
- Improving the design of existing code. In our ranking of programming books it is number 9 of 11 with a score of 86.5.
- What are the best alternatives to Refactoring: Improving the Design of Existing Code?
- The highest-ranked alternatives on listme.name are Designing Data-Intensive Applications, The Pragmatic Programmer, 20th Anniversary Edition, Structure and Interpretation of Computer Programs, Crafting Interpreters.
Show this ranking on your site
If you make or maintain Refactoring: Improving the Design of Existing Code, this badge links back to this page and shows its current rank. It updates when the ranking does.
<a href="https://listme.name/books/refactoring"><img src="https://listme.name/badge/refactoring.svg" height="28" alt="Ranked #9 of 11 programming books on listme.name"></a>