Goodreads helps you keep track of books you want to read.
Start by marking “Refactoring: Improving the Design of Existing Code (Addison-Wesley Signature Series (Fowler))” as Want to Read:
Refactoring: Improving the Design of Existing Code (Addison-Wesley Signature Series
(Addison-Wesley Object Technology Series)
by
Your class library works, but could it be better? Refactoring: Improving the Design of Existing Code shows how refactoring can make object-oriented code simpler and easier to maintain. Today refactoring requires considerable design know-how, but once tools become available, all programmers should be able to improve their code using refactoring techniques.
Besides an introd
...moreGet A Copy
Kindle Edition, 448 pages
Published
November 20th 2018
by Addison-Wesley Professional
(first published January 1st 1999)
Friend Reviews
To see what your friends thought of this book,
please sign up.
Reader Q&A
To ask other readers questions about
Refactoring,
please sign up.
Popular Answered Questions
Madhur Ahuja
The book examples are in Java not C#. You will still benefit from it. Make sure you have read Gang of four design patterns before reading this book.
This book is not yet featured on Listopia.
Add this book to your favorite list »
Community Reviews
Showing 1-30

Start your review of Refactoring: Improving the Design of Existing Code (Addison-Wesley Signature Series (Fowler))

Overall I was disappointed in this book. Modern tools and IDE's have removed nearly all of the pain points that are laid out in this book, which made reading annoying and tiresome. I skipped the "Mechanics" section of every single refactor because they are just not relevant in 2016. Your compiler and IDE will tell you every thing you need to know in nearly all cases.
That being said the content is good, albeit very basic. I would recommend this to someone who is just out of college or with littl ...more
That being said the content is good, albeit very basic. I would recommend this to someone who is just out of college or with littl ...more

Refactoring is the process of rewriting software, without changing the way it functions, in order to improve its readability, testability or maintanability. A book has been written on the subject by Martin Fowler. Some of the chapters were written by other people.
“Refactoring: Improving the Design of Existing Code” is focused on OO programming (lots of Java examples) and Agile practices. It is setup as a catalog of refactoring techniques. Each page dedicated to a refactoring is clearly marked, s ...more
“Refactoring: Improving the Design of Existing Code” is focused on OO programming (lots of Java examples) and Agile practices. It is setup as a catalog of refactoring techniques. Each page dedicated to a refactoring is clearly marked, s ...more

While this book is more of a reference book than a book to read through a memorise (and I intend to use it as such in the future), this book is well worth having for software engineers looking to improve their practices. Even if you don't subscribe to Martin Fowler's 'lots of small methods and classes' style of programming (and I admit, it takes some getting used to), the techniques in this book are still useful and applicable to any software project.
The book consists mainly of a catalog of ref ...more
The book consists mainly of a catalog of ref ...more

The second edition of the classic Refactoring book by Martin Fowler is more than just an update. It switched from Java to JavaScript for most of the examples, what lead to many renames of refactorings (for example: extract function instead of extract method). Most of the classical refactorings are still there and it had space for new ones like Split Phase – one practice I found by myself and now can refer to using a name. This tradition of giving names to practices around refactoring is continue
...more

If you are interested in improving and maintaining the quality of your code this book should be on your reading list. It is not the kind of book you read once and forget about it. When you are doing refactoring it’s always recommended to come back and check the categories explained in it.
What I really enjoyed is that it confirmed some of the ideas I already had about software development. On the first hand you should have a robust test suite in order to be certain that refactoring didn’t change ...more
What I really enjoyed is that it confirmed some of the ideas I already had about software development. On the first hand you should have a robust test suite in order to be certain that refactoring didn’t change ...more

This book is not just for refactoring, it's for understanding how professional are thinking about their code. You can use these methods even in writing the first line of your code.
This is one of the books that every developer should read to transform his knowledge to be in more readable and flexible code.
...more
This is one of the books that every developer should read to transform his knowledge to be in more readable and flexible code.
...more

Refactoring is definitely an educational read for any programmer. It covers many areas of refactoring from why we need it to how we should do it and get it done. The only regret that I have right now is reading the first edition of this book (+20 years old!) while there was a second edition which was published 2 years ago. When I read the change-log, it didn't seem like very different but as soon as I picked-up the book I realized how outdated it is in some parts. There are tons of discussions a
...more

At the beginning of the book, Martin Fowler states:
“My aim is to show you how to do refactoring in a controlled and efficient manner. You will learn to refactor in such a way that you don’t introduce bugs into the code but methodically improve its structure.”
Well, he has done it perfectly.
There are a lot of #refactoring methods in the book that can inspire you to write better #code and improve the structure of your #software. Some of them are complex and some of them are so simple that maybe you ...more
“My aim is to show you how to do refactoring in a controlled and efficient manner. You will learn to refactor in such a way that you don’t introduce bugs into the code but methodically improve its structure.”
Well, he has done it perfectly.
There are a lot of #refactoring methods in the book that can inspire you to write better #code and improve the structure of your #software. Some of them are complex and some of them are so simple that maybe you ...more

You hear something about refactoring and you want to see what it is ?
You want to make your code better but don't know how to do it ?
If your answer is yes, then this book is for you.
Martin Fowlers 'Refactoring' is in my opinion the best book about this subject.
Author describes many refactoring techniques and explain how and when to use them.
Each technique has it's own example write in javascript - code is very easy to understand
and you won't have any problems to apply it in your language of choic ...more
You want to make your code better but don't know how to do it ?
If your answer is yes, then this book is for you.
Martin Fowlers 'Refactoring' is in my opinion the best book about this subject.
Author describes many refactoring techniques and explain how and when to use them.
Each technique has it's own example write in javascript - code is very easy to understand
and you won't have any problems to apply it in your language of choic ...more

This book is a must-read for every software developer. I would personally recommend it to my team members.
I totally agree with Martin and his vision that the changes should be incremental. I think everyone that tried a "complete rewrite" at some point failed or at least achieved unsatisfactory results. Maybe they didn't completed in time or didn't achieve the expected results.
The most important aspect that is emphasized in the book is that you should apply refactoring when you need to, not just ...more
I totally agree with Martin and his vision that the changes should be incremental. I think everyone that tried a "complete rewrite" at some point failed or at least achieved unsatisfactory results. Maybe they didn't completed in time or didn't achieve the expected results.
The most important aspect that is emphasized in the book is that you should apply refactoring when you need to, not just ...more

Biggest takeaway is to take really small steps when refactoring, which the book demonstrated a lot with detailed examples. A lot of times I felt uncomfortable during refactoring, but now I know it's because that I cut corners and didn't take small enough steps.
The book also "refactors to patterns" a lot, which I found helpful reading immediately after the design pattern book. ...more
The book also "refactors to patterns" a lot, which I found helpful reading immediately after the design pattern book. ...more

Great introductory book to the topic for people not already nose deep into software design.

It's more like a reference than a book, so it's a bit dry to read.
...more

A solid book for a developer which contains a number of so-called "code smells", which should tell you that this specific piece of code needs to be refactored, along with techniques to achieve this result. Although these techniques seems outdated as modern IDEs are able to make most of these refactorings automatically for you (and these automation is described in Chapter 14) it is still good to know when to perform these refactorings.
This book may be read both as a reference guide (it has conven ...more
This book may be read both as a reference guide (it has conven ...more

It was long overdue for me to read a technical book and I've decided to go for a classic from 1999 about refactoring, written by software development icons as Martin Fowler and Kent Beck. As such, it is not a surprise that Refactoring: Improving the Design of Existing Code feels a little dated. However, not as much as I had expected. You see, the book is trying to familiarize the user with the idea of refactoring, something programmers of these days don't need. In 1999, though, that was a breakt
...more

Pros: presenting refactoring as a regular part of the development process is an important step forward. The example at the start of the book is a great demonstration if why this stuff matters. Nice to systematically catalog code smells.
Cons: the code smells section is great, but has no actual code examples. The chapters that go through the refactoring moves are better, but having each one isolated makes it boring to read. The big refactoring chapters are only UML diagrams, which are not good te ...more
Cons: the code smells section is great, but has no actual code examples. The chapters that go through the refactoring moves are better, but having each one isolated makes it boring to read. The big refactoring chapters are only UML diagrams, which are not good te ...more

I was having a great time reorganizing and hopefully improving some Java at work, and a coworker had mentioned this book. Good stuff. I didn't read through the whole reference section, but took a quick look at some. It seems like the IDE I was using (IntelliJ) had a bunch of refactorings (not sure what the overlap is with this catalog) available as keyboard shortcuts, basically. But it's still fun to read about. Unfortunately, I got this book approximately the same week I shifted off Java develo
...more

Finally finished this, long after the book club for it was over! This is a classic, which means there are both really good pieces of wisdom in here as well as concerns that don't need to be worried about so much anymore with more modern tools and text editors. The majority of the book is kind of a reference of refactoring "recipes" with checklists to go through to make sure you haven't missed something--time will tell if I end up using that reference portion. The descriptions and motivations for
...more

Good way to end a year!
A must-read reference for every developer, not only ones dealing with legacy code but ones starting new project to save the project on the long-run.
The book is well written, provides samples, examples, diagrams, steps to follow, side-notes, commentary, and basically everything you would need to fully understand a refactoring method.
While the book doesn't provide revolutionary solutions to perform refactoring (you shouldn't perform major refactoring in one step anyway), a l ...more
A must-read reference for every developer, not only ones dealing with legacy code but ones starting new project to save the project on the long-run.
The book is well written, provides samples, examples, diagrams, steps to follow, side-notes, commentary, and basically everything you would need to fully understand a refactoring method.
While the book doesn't provide revolutionary solutions to perform refactoring (you shouldn't perform major refactoring in one step anyway), a l ...more

The best programming book I've read in a long time.
There are a lot of design and analysis books but not a lot of programming books. I would gladly read anything from Fowler. It's so simple of a concept but it goes against a lot of 'common sense'. Essentially, don't over design. Don't spend too much time in design and analysis that you've been told to do based on the wrong assumptions of the waterfall model (which never worked).
Kent's book on Test-driven Development is a great companion to this ...more
There are a lot of design and analysis books but not a lot of programming books. I would gladly read anything from Fowler. It's so simple of a concept but it goes against a lot of 'common sense'. Essentially, don't over design. Don't spend too much time in design and analysis that you've been told to do based on the wrong assumptions of the waterfall model (which never worked).
Kent's book on Test-driven Development is a great companion to this ...more

This book can give you a motivation to start refactoring & how to do it the right way.
From my perspective, this book 70% like a catalog to look up when you have a case & need to refactor it.
I can't remember all of the patterns, but I can index it whenever I don't have any idea how to refactor it.
One more thing that around the pattern which covers by this book good focus for OOP than others. I didn't like this point too much. ...more
From my perspective, this book 70% like a catalog to look up when you have a case & need to refactor it.
I can't remember all of the patterns, but I can index it whenever I don't have any idea how to refactor it.
One more thing that around the pattern which covers by this book good focus for OOP than others. I didn't like this point too much. ...more

Sep 11, 2014
Ricardo Cavalcanti
rated it
it was amazing
·
review of another edition
Shelves:
coding-practice,
must-reads
This book represents one of the building blocks of good programming. Most of the examples are in java, and most of the techniques are already implemented by IDE such as IntelliJ. Still, the ideas can be applied in any programming language, with or without an IDE.

Very dense book. There's a lot of techniques about refactoring. It's a bit intense so I recommend not reading everything at once like I did.
...more

Good in its day
This is the book that introduced the concept of refactoring to the wider software engineering community. A refactoring is a change to the structure of code that does not change its functionality. Prior to this the prevailing wisdom was "if it ain't broke don't fix it", and whilst this is still a sensible principle in general most programmers know that code can be broken even when it produces the correct output. Refactoring the code can help to fix those less tangible problems - ma ...more
This is the book that introduced the concept of refactoring to the wider software engineering community. A refactoring is a change to the structure of code that does not change its functionality. Prior to this the prevailing wisdom was "if it ain't broke don't fix it", and whilst this is still a sensible principle in general most programmers know that code can be broken even when it produces the correct output. Refactoring the code can help to fix those less tangible problems - ma ...more

An update to the 1999 classic Refactoring. I still have my autographed copy of the first edition. The original used code examples in Java. This new edition uses JavaScript instead.
I followed Fowler's advice to "read the first four chapters completely, then skip-read the catalog." It's the same approach I used when I read Gerard Meszaros' xUnit Test Patterns. The initial chapters make a case for refactoring and describe the general principles. The remainder of the book is a nice catalog of specif ...more
I followed Fowler's advice to "read the first four chapters completely, then skip-read the catalog." It's the same approach I used when I read Gerard Meszaros' xUnit Test Patterns. The initial chapters make a case for refactoring and describe the general principles. The remainder of the book is a nice catalog of specif ...more

I went into this book with pretty large expectations. I had heard the book was great, but I realize now I never really heard why it was great. The rumor mill just told me that it was the book to read if you wanted to learn refactoring.
Unfortunately, I found myself very disappointed by the book. The first four chapters could be compared to Clean Code in many ways; they introduce some good practices of coding and how to perform a refactoring safely. But beyond that it is just a reference list of a ...more
Unfortunately, I found myself very disappointed by the book. The first four chapters could be compared to Clean Code in many ways; they introduce some good practices of coding and how to perform a refactoring safely. But beyond that it is just a reference list of a ...more

You sort of have to give this five stars, just based on reputation alone. This is one of the great books of computer science.
As the title would imply, it's about fixing the internals of computer programs, without changing how the program functions from the "outside." This is a time-honored task in computer science -- programs get all twisted and crufty over time as they're modified and maintained, and every once in a while you have to straighten things out so you can continue working on them eas ...more
As the title would imply, it's about fixing the internals of computer programs, without changing how the program functions from the "outside." This is a time-honored task in computer science -- programs get all twisted and crufty over time as they're modified and maintained, and every once in a while you have to straighten things out so you can continue working on them eas ...more

Feb 09, 2019
Scott J Pearson
rated it
liked it
·
review of another edition
Shelves:
software-technology
I picked up this book at the wrong time. The book was so successful that a second edition is due out on November 30, 2018 (less than two weeks from now).
On the other hand, I picked up this book at the right time. At work, my project is in the midst of a refactoring project. I am in the middle of changing PHP code from modular functions to object-orientation. The aim of this transition is to enhance the scalability of the project and ease the writing of documentation. I generally like to peer "be ...more
On the other hand, I picked up this book at the right time. At work, my project is in the midst of a refactoring project. I am in the middle of changing PHP code from modular functions to object-orientation. The aim of this transition is to enhance the scalability of the project and ease the writing of documentation. I generally like to peer "be ...more

This is a review of the 2nd edition.
While I thought I had a decent knowledge of what refactoring was, having read the first 100 pages of this book, I had to admit to myself that my knowledge had been shallow at best. People in IT do have a tendency to fling terms around loosely, and “refactoring” is one of those terms.
The first part of the book sorts you out in that respect, and also gives you an education about why refactoring is important and also how to go about doing it in your software deve ...more
While I thought I had a decent knowledge of what refactoring was, having read the first 100 pages of this book, I had to admit to myself that my knowledge had been shallow at best. People in IT do have a tendency to fling terms around loosely, and “refactoring” is one of those terms.
The first part of the book sorts you out in that respect, and also gives you an education about why refactoring is important and also how to go about doing it in your software deve ...more
topics | posts | views | last activity | |
---|---|---|---|---|
Goodreads Librari...: Second edition is listed as a separate book | 2 | 239 | Dec 19, 2018 10:43AM |
Goodreads is hiring!
Martin Fowler (b. 1963) is a software engineer, Chief Scientist at ThoughtWorks, and an outspoken advocate for best practices in enterprise software design, particularly in regard to agile software development methodologies, including extreme programming.
...more
Other books in the series
Addison-Wesley Object Technology Series
(1 - 10 of 39 books)
News & Interviews
Listen up, because our colleagues here at Goodreads have some excellent audiobook recommendations for you! Of course, the books they've...
41 likes · 25 comments
No trivia or quizzes yet. Add some now »
“I’m not a great programmer; I’m just a good programmer with great habits.”
—
16 likes
“Whenever I have to think to understand what the code is doing, I ask myself if I can refactor the code to make that understanding more immediately apparent.”
—
9 likes
More quotes…