Refactoring: Improving the Design of Existing Code

Martin Fowler's catalog of small, safe changes to improve code design

86.5
Score in best programming books

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

ProductScorePriceFormatsLevelFree to read onlineLatest editionMain focus
#7Fluent Python88.5PaidPrintIntermediateNo2nd editionIdiomatic, effective Python code
#8The Rust Programming Language88.0FreeRead onlineBeginnerYesUpdated for Rust 1.97The Rust language and ownership
#9Refactoring: Improving the Design of Existing Code86.5PaidPrintIntermediateNo2nd edition, 2018Improving code design in small, safe steps
#10Think Python, 3rd Edition83.5FreeRead online, PrintBeginnerYes3rd editionPython for complete beginners
#11Automate the Boring Stuff with Python, 3rd Edition80.5FreeRead online, PDF, EPUB, Kindle, PrintBeginnerYes3rd edition, April 2025Python scripts for everyday tasks

The full comparison table for best programming books has all 11 products.

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.

Ranked #9 of 11 programming books on listme.name
<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>