Refactoring: Improving the Design of Existing Code

Refactoring: Improving the Design of Existing Code

4.21 of 5 stars 4.21  ·  rating details  ·  1,483 ratings  ·  88 reviews
Now you can dramatically improve the design, performance, and manageability of object-oriented code without altering its interfaces or behavior. Refactoring shows you exactly how to spot the best opportunities for refactoring and exactly how to do it -- step by step. Through more than forty detailed case studies, you'll learn powerful -- and surprisingly simple -- ways to...more
Hardcover, 464 pages
Published June 28th 1999 by Addison-Wesley Professional
more details... edit details

Friend Reviews

To see what your friends thought of this book, please sign up.
The  C Programming Language by Brian W. KernighanThe Pragmatic Programmer by Andrew HuntDesign Patterns by Erich GammaStructure and Interpretation of Computer Programs by Harold AbelsonRefactoring by Martin Fowler
Essential Programming Books
5th out of 86 books — 151 voters
The Pragmatic Programmer by Andrew HuntCode Complete by Steve McConnellClean Code by Robert C. MartinRefactoring by Martin FowlerWorking Effectively with Legacy Code by Michael Feathers
Software Craftsmanship
4th out of 18 books — 36 voters


More lists with this book...

Community Reviews

(showing 1-30 of 3,000)
filter  |  sort: default (?)  |  rating details
Nick
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
Ivan Idris
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
Tim
Pros: The opening chapters give a great introduction to refactoring. The middle chapters are worth their weight in gold as a reference to object-oriented refactorings. Explains why refactoring is a necessity for us.

Cons: The final 3 chapters by other authors weren't very useful to me, exluding Beck's chapter, but don't necessarily detract from the book because I suspect others will find them relevant.

Summary: One of those "must have" books for all "classical" developers (procedural and object-or...more
Brian
A fantastic catalog of refactoring patterns. To read this book is to read code, lots of it. That's both good and bad; good because you can't learn code without actually coding; bad because it's very hard to provide good examples of code that marries well with the reader's experiences. Show a simple example, the richness of the lesson is lost. Show a complex example, the reader gets lost in the example and misses the lesson.

The first priority of code is to make it work. But how often do we stop...more
Carl-Erik Kopseng
Not a book to read cover to cover, but very useful when you are wondering how to achieve something. Might have been groundbreaking in its day, but when reading it a lot of the tips/how-to's seemed not to have passed the test of time. Not because they are not correct, but because a lot of them are now integrated into the tools (IDEs) we use every day. Might make more sense if you are hardcore a Vi/Emacs user without refactoring support.

A lot of the harder refactorings are not in any IDE, and then...more
Eqwik
Every programmer can develop code that a computer understands, but only units write understandable code to others. It's really brilliant words. Refactoring is a very important process. Very pity that much developers don't understand it. Especially insulting when these people are your managers. In this case, you have only one way, don't speak about refactoring as author advised.
Testing is refactoring's friend. It is another very useful advise. Nice to know that more and more developers spend more...more
Daniel
Mar 09, 2009 Daniel rated it 5 of 5 stars
Shelves: work
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
Zekses
This book presents some basic designs for refactoring your software towards better readability and thus easier modifications. I can not give it 5 stars for 2 reasons only
1) it is a bit old
2) most of the things discussed here are better conveyed in the "Code Complete. Second Edition" which I believe to be far superior to this book both in terms of being up to date and simplicity of the language (which makes latter more understandable)

But anyway - this is a really good read for someone who wants t...more
Dimitko
The thing that made this book amazing in my eyes is the demystification factor.

As the author himself admits, software consultants often say they adhere to some vague notion of "software aesthetics", which frankly doesn't help at all when one wants to reach the next level of good programming.

However, in this book the author gives a detailed (but not bloated!) list of very concrete techniques to make Java projects easier to maintain and evolve.

One of the "absolutely must read" books when you get p...more
David Workman
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
Andreea
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
Irwan
This book is the foundation of those sets of techniques, methodologies and practices which came later, but I've already known before finishing this book. Very inspiring for me professional-wise. There is also a historical element in reading it, that is to see the conception of an innovative idea in the academic work until it became adapted in the industry.

Reading the techniques like Extract Method, etc, I usually just scan quickly the steps prescribed, because now it takes only a few keys in the...more
Ash Moran
There's some good stuff and some not so good stuff in here.

The discussion about the refactoring principles and process are excellent. It ties in well with the explicit mechanics of the refactoring, which is about being able to take small, behaviour-preserving steps.

Some of the examples are suspect though. The authors point out that the refactorings are not designed to demonstrate a business model, but some of the use of Mountain Bike classes just seem way off. Also, while they don't fully factor...more
Sylvain Prat
C'est un livre très instructif montrant comment réagencer du code existant en vue de l'améliorer (lisibilité, maintenabilité, testabilité, préparation à l'ajout de fonctionnalités). C'est en quelque sorte un livre de recettes, mais de ce fait il est assez difficile/fastidieux à lire, surtout de bout en bout.

Une chose qui m'a un peu agacé à la lecture du bouquin : les exemples sont introduits après le mode d'emploi, ce qui fait que l'on a du mal à comprendre ce que veux dire l'auteur avant d'avo...more
Algirdas Raščius
This book was published more than a decade ago - it is quite a long time for a book on software development. Yet list of refactorings provided in the book is still very much useful today. On the other hand, concrete techniques (mechanics as they are called) of refactoring are somehow outdated because of advancement of automatic refactoring support in modern IDEs.

Anyway I thing reading this book will be useful for any developer practicing object oriented programming.
Juliusz Gonera
Book lists refactoring recipes for:
+ composing methods
+ moving features
+ organizing data
+ simplifying conditional expressions
+ making method calls simpler
+ dealing with generalization

The recipes are very simple/basic, if you have experience in programming you will find most of them familiar. The value of the book is in systematizing the methods of refactoring, explaining the motivation behind them, giving examples of things to look out for in your code.

It will not revolutionize the way you appr...more
Shaun
This book represents an excellent catalog of refactoring techniques. Seasoned developers will recognize most of the concepts but it certainly helps to have them laid out in such a straight-forward fashion. If you are a new developer, I would consider this book instrumental in your professional development.
Justin
If you write any code at all, anywhere, read this book. Refactoring should be an integral part of all coding efforts, and this book does a marvelous job of conveying the mechanics and theory of such things through clear prose and many examples.
Tim McGilchrist
Nothing revolutionary to any experienced programmer, but a nice confirmation of how to do refactoring Ruby style.
It's a great book to have in the office for starting discussions about how a piece of code should look.

I flew through the first 100 or so pages, but the catalogue of patterns stopped me dead. That section of the book deserves to be read in small chunks as you find offending code in your own codebase.

I read the original version in Java but I feel like I got more out of the Ruby version...more
Vladimir
This is amazing well organized reference to refactoring. I still open it sometimes to get inspiration for improving daily code.

This is a very good start to new programmers, who want to become a great software developers.
Jess Robinson
One of the most useful programming books out there, many many little snippets of code examples on how to keep your code from becoming stale, and keeping it tidy. I keep wanting to re-write them all in Perl just because I could..
Bek
Like any guide of this sort, you have to pick and choose when and how much you want to use of it. But it's an incredible collection of techniques for repairing bad or overgrown code bases. Embrace change!
Adarsh Shah
This is a great book. It changed the way I think and write code. This not only helps in refactoring the existing code but also makes me think when I write new code.
Lazysmokier
Для тех кто более-менее знаком с современными IDE, книжка, скорее всего, покажется скучной. В ней расписываются по шагам основные виды рефакторингов кода. Также есть советы когда и какой рефакторинг применить.

На мой взгляд книга будет наиболее полезна программистам продвинуто-начинающего или начинающе-среднего уровня
Tim
This was a real eye-opener when I first read it. An absolute must for all software engineers as even new code rapidly becomes legacy code if ignored.
Stefan Kanev
You *must* read this book if you are computer programmer and if you are even slightly serious about it. Even if I had picked up most of the ideas from other places, I still learned a great deal from this book.
Igoris Azanovas
Very good book on technical details of refactoring. Now there are a lot of tools that do most of refactoring written in this book.
Stephen
This book had a huge impact on me. The "Code Smells" chapter by Kent Beck was worth the price of admission alone.
Leah Loughran
side-by-side examples were great. Felt very applicable and strangely personal. Liked it a lot!
Wayne
I found it a great help writting well constructed OOP code. Quality design and construction of OOP code are a couple of those intangibles which are hard to discern merely by reading things like keep your code loosely coupled etc.

Besides the obvious benefits of great refactorings for poorly written code, I found it more valuable in that it has given me a much better sense of what well constructed clean code looks like by illustrating what not to do.

BTW, after a couple of weeks with this book, my...more
« previous 1 3 4 5 6 7 8 9 99 100 next »
There are no discussion topics on this book yet. Be the first to start one »
Refactoring: Ruby Edition (Hardcover)
Рефакторинг. Улучшение существующего кода (Hardcover)
Refactoring: Improving the Design of Existing Code (Kindle Edition)
Refactoring: oder: Wie Sie das Design vorhandener Software verbessern (Paperback)
Refactoring: Improving the Design of Existing Code (Paperback)

Goodreads is hiring!

If you like books and love to build cool products, we may be looking for you.
Learn more »
Patterns of Enterprise Application Architecture UML Distilled: A Brief Guide to the Standard Object Modeling Language Analysis Patterns: Reusable Object Models Domain-Specific Languages UML Distilled: Applying the Standard Object Modeling Language

Share This Book

Your website