Improving the Design of Existing Code
Martin Fowler (with contributions by Kent Beck)

#Refactoring
"Whenever you read [Refactoring], it’s time to read it again. And if you haven’t read it yet, please do before writing another line of code."
–David Heinemeier Hansson, Creator of Ruby on Rails, Founder & CTO at Basecamp
Fully Revised and Updated—Includes New Refactoring's and Code Examples
“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”
–M. Fowler (1999)
For more than twenty years, experienced programmers worldwide have relied on Martin Fowler’s Refactoring to improve the design of existing code and to enhance software maintainability, as well as to make existing code easier to understand.
This eagerly awaited new edition has been fully updated to reflect crucial changes in the programming landscape. Refactoring, Second Edition, features an updated catalog of refactoring's and includes JavaScript code examples, as well as new functional examples that demonstrate refactoring without classes.
Like the original, this edition explains what refactoring is; why you should refactor; how to recognize code that needs refactoring; and how to actually do it successfully, no matter what language you use.
Includes free access to the canonical web edition, with even more refactoring resources. (See inside the book for details about how to access the web edition.)
Contents
Chapter 1: Refactoring: A First Example
Chapter 2: Principles in Refactoring
Chapter 3: Bad Smells in Code
Chapter 4: Building Tests
Chapter 5: Introducing the Catalog
Chapter 6: A First Set of Refactorings
Chapter 7: Encapsulation
Chapter 8: Moving Features
Chapter 9: Organizing Data
Chapter 10: Simplifying Conditional Logic
Chapter 11: Refactoring APls
Chapter 12: Dealing with Inheritance
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.









