Other Sellers on Amazon
+ $3.00 Delivery
88% positive over last 12 months
& FREE Delivery
87% positive over last 12 months
& FREE Delivery
82% positive over last 12 months

Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet or computer – no Kindle device required. Learn more
Read instantly on your browser with Kindle Cloud Reader.
Using your mobile phone camera, scan the code below and download the Kindle app.


Refactoring: Improving the Design of Existing Code Hardcover – Illustrated, 17 December 2018
Martin Fowler (Author) Find all the books, read about the author, and more. See search results for this author |
Amazon Price | New from | Used from |
Enhance your purchase
Refactoring is about improving the design of existing code. It is the process of changing a software system in such a way that it does not alter the external behavior of the code, yet improves its internal structure. With refactoring you can even take a bad design and rework it into a good one. This book offers a thorough discussion of the principles of refactoring, including where to spot opportunities for refactoring, and how to set up the required tests. There is also a catalog of more than 40 proven refactorings with details as to when and why to use the refactoring, step by step instructions for implementing it, and an example illustrating how it works. The book is written using Java as its principle language, but the ideas are applicable to any OO language.
>- ISBN-100134757599
- ISBN-13978-0134757599
- Edition2
- PublisherADDISON WESLEY
- Publication date17 December 2018
- LanguageEnglish
- Dimensions2.03 x 18.8 x 23.37 cm
- Print length448 pages
Frequently bought together
- +
- +
Customers who viewed this item also viewed
Product description
About the Author
Martin Fowler is Chief Scientist at ThoughtWorks. He describes himself as “an author, speaker, consultant and general loud-mouth on software development.” Fowler concentrates on designing enterprise software: exploring what makes a good design and what practices are needed to create one.
Don't have a Kindle? Get your Kindle here, or download a FREE Kindle Reading App.
Product details
- Publisher : ADDISON WESLEY; 2 edition (17 December 2018)
- Language : English
- Hardcover : 448 pages
- ISBN-10 : 0134757599
- ISBN-13 : 978-0134757599
- Dimensions : 2.03 x 18.8 x 23.37 cm
- Best Sellers Rank: 29,436 in Books (See Top 100 in Books)
- 12 in Object-Oriented Software Design Textbooks
- 27 in Object-Oriented Design
- 32 in Software Testing
- Customer Reviews:
About the author

For all of my career I've been interested in the design and architecture of software systems, particularly those loosely classed as Enterprise Applications. I firmly believe that poor software design leads to software that is difficult to change in response to growing needs, and encourages buggy software that saps the productivity of computer users everywhere.
I'm always trying to find out what designs are effective, what approaches lead people into trouble, how we can organize our work to do better designs, and how to communicate what I've learned to more people. My books and website are all ways in which I can share what I learn and I'm glad I've found a way to make a living doing this.
Customer reviews
Top review from Australia
There was a problem filtering reviews right now. Please try again later.
Top reviews from other countries

The book was bound upside down. Even if that had been correct, the paper is of the cheapest possible quality which means you can see the text of the next page through the page you are reading, something that makes reading source code, where punctuation really matters, much more difficult.

In the 20 years since the first edition this has become an uncontroversial point and "refactoring" has entered the daily lexicon of the software engineering discipline. Surely time for an update to the classic text on the subject to bring it up to date with all the learning that 20 years of widespread practise have revealed!
Unfortunately it seems that there isn't much new to say. The refactoring techniques have been shuffled around a bit, sometimes consolidated or split, but they all seem very familiar. They are now so familiar that they seem trivial in fact, so obvious they barely need mentioning. Whilst there is value in establishing a common lexicon for these common operations, the detailed step by step examples become a chore to read through because they are so obvious.
One of the major changes in this anniversary edition is that the examples in Java from the first edition (it was fashionable at the time) have been rewritten in Javascript (it was fashionable at the time). This is a questionable choice... Javascript is idiosyncratic, and a weakly typed language does not illustrate the form of some of the techniques described well. So many of the examples are qualified with "because javascript..." or "in a statically typed language..." that it must have occurred to the author that the book would be clearer (and probably shorter) if the examples had been written in a language more suitable to what they were intended to illustrate.
Most of the examples boil down to making small, incremental changes and then running your comprehensive set of tests (which take a few seconds to run) to make sure you didn't make a mistake. Fine if you're working on some small, isolated piece of code with unit tests accessible at a keystroke... Less helpful when you're working with part of a legacy system that takes 15 minutes to build and 30 to run through its tests (if they exist). Unfortunately the latter are where refactoring is probably most needed.
The book is worth adding to your library and at least skimming to pick up some patterns and terminology if you're new to programming. You might occasionally even find yourself consulting it as a reference for how to do a refactoring, though the answer is probably "in the obvious way".
The author should rightly be proud of the fact that his original text was so influential that 20 years later it is hard to imagine that there was a time when it needed to be written ;-)

My only gripe is that book looked half the size of the original! This isn't due to an extensive refactoring, but the rather thin, poor quality paper. "Bible paper" as one colleague quipped when they saw it. The thin pages are easily creased or torn, and the ink from the other side of each page shows through slightly. Very disappointing to see this with an Addison Wesley book, especially given the price and the fact the hard cover is the usual robust and high quality binding. I've deducted a star for this, although I nearly deducted two!

The content of this book is second to none - it’s a goldmine of useful techniques to help keep code in the best shape possible. Fowler goes into excruciating detail with regard to the steps taken for each refactoring. I found the reinforcement of ‘smaller steps’ incredibly useful when applying the techniques on my own later - I moved incrementally with the confidence of knowing which exact step in the process may have triggered a test failure.
On the subject of testing, the book hammers home it’s importance in being able to actually refactor, which I can only see as a good thing.
While the language of choice for the second edition is JavaScript, Fowler explains that the book is not focused on the language itself, rather it uses it as a vehicle to communicate the refactoring to a wider audience (the JavaScript used in the book is fairly simple and easy to follow). The fact that much of the software world is writing or making use of JavaScript in some way possibly makes this book more consumable by more people, perhaps as a result it can be used to introduce new ways of thinking about software to those not previously exposed to the type of knowledge and approach exposed in this book.
Returning to the topic of physical quality, the book is hardbacked, the pages are printed with some colour (rare for a programming book), in addition to having a ribbon in the spine. These attributes only add to the positive experience of reading this book.
