# Refactoring: Improving the Design of Existing Code

Source: https://listme.name/books/refactoring
Website: https://martinfowler.com/books/refactoring.html

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

Refactoring: Improving the Design of Existing Code is a book by Martin Fowler with Kent Beck, and its second edition was published in 2018. It presents refactoring as small behavior-preserving changes and catalogs around seventy of them. The first edition came out in 1999.

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.

- Paid | Print
- Price: Print edition sold by booksellers; price varies by seller
- Checked: 2026-10-10

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

## Rankings

- #9 of 11 in [best Programming books](https://listme.name/best/programming-books), score 86.5: 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.

## Alternatives

- [Designing Data-Intensive Applications](https://listme.name/books/designing-data-intensive-applications), score 94.0
- [The Pragmatic Programmer, 20th Anniversary Edition](https://listme.name/books/the-pragmatic-programmer), score 92.5
- [Structure and Interpretation of Computer Programs](https://listme.name/books/sicp), score 91.0
- [Crafting Interpreters](https://listme.name/books/crafting-interpreters), score 90.5
- [Eloquent JavaScript, 4th Edition](https://listme.name/books/eloquent-javascript), score 89.5
- [Software Engineering at Google](https://listme.name/books/software-engineering-at-google), score 89.0
- [Fluent Python](https://listme.name/books/fluent-python), score 88.5
- [The Rust Programming Language](https://listme.name/books/rust-programming-language), score 88.0
