Refactoring: Improving the Design of Existing Code (Addison-Wesley Object Technology Series)
by Martin Fowler
|
|
|
About This Book
ISBN13: 9780201485677 |
Synopses & Reviews
Publisher Comments:
As the application of object technology-particularly the Java programming language-has become commonplace, a new problem has emerged to confront the software development community. Significant numbers of poorly designed programs have been created by less-experienced developers, resulting in applications that are inefficient and hard to maintain and extend. Increasingly, software system professionals are discovering just how difficult it is to work with these inherited, "non-optimal" applications. For several years, expert-level object programmers have employed a growing collection of techniques to improve the structural integrity and performance of such existing software programs. Referred to as "refactoring," these practices have remained in the domain of experts because no attempt has been made to transcribe the lore into a form that all developers could use. . .until now. In Refactoring: Improving the Design of Existing Software, renowned object technology mentor Martin Fowler breaks new ground, demystifying these master practices and demonstrating how software practitioners can realize the significant benefits of this new process.
With proper training a skilled system designer can take a bad design and rework it into well-designed, robust code. In this book, Martin Fowler shows you where opportunities for refactoring typically can be found, and how to go about reworking a bad design into a good one. Each refactoring step is simple-seemingly too simple to be worth doing. Refactoring may involve moving a field from one class to another, or pulling some code out of a method to turn it into its own method, or even pushing some code up or down a hierarchy. While these individual steps may seem elementary, the cumulative effect of such small changes can radically improve the design. Refactoring is a proven way to prevent software decay.
In addition to discussing the various techniques of refactoring, the author provides a detailed catalog of more than seventy proven refactorings with helpful pointers that teach you when to apply them; step-by-step instructions for applying each refactoring; and an example illustrating how the refactoring works. The illustrative examples are written in Java, but the ideas are applicable to any object-oriented programming language.
Book News Annotation:
A guide to refactoring, the process of changing a software system so
that it does not alter the external behavior of the code yet improves
its internal structure, for professional programmers. Early chapters
cover general principles, rationales, examples, and testing. The
heart of the book is a catalog of refactorings, organized in chapters
on composing methods, moving features between objects, organizing
data, simplifying conditional expressions, and dealing with
generalizations. Later chapters describe issues in adopting
refactoring in commercial development, automated tools, and the
future of refactoring. Java is used for all examples.
Annotation c. Book News, Inc., Portland, OR (booknews.com)
Annotation c. Book News, Inc., Portland, OR (booknews.com)
Synopsis:
An introduction to the concept of refactoring, the process of changing a software system by improving its internal structure, but without affecting the external behaviour of the code. The book informs the programmer when to use this technique, how to implement it efficiently and when not to use it.
Synopsis:
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 redesign code that is already in production. You'll learn scores of specific techniques, including when to move fields between classes, when to move code or down its hierarchy, and when to divide a single method into up two. Through intuition and trial and error, master programmers have spent years evolving these techniques; this book brings them all together into a comprehensive guide that any experienced developer can use.
Synopsis:
Users can dramatically improve the design, performance, and manageability of object-oriented code without altering its interfaces or behavior. "Refactoring" shows users exactly how to spot the best opportunities for refactoring and exactly how to do it, step by step.
Table of Contents
Foreword Preface
Chapter 1: Refactoring, a First Example
The Starting Point
The First Step in Refactoring
Decomposing and Redistributing the Statement Method
Replacing the Conditional Logic on Price Code with Polymorphism
Final Thoughts
Chapter 2: Principles in Refactoring
Defining Refactoring
Why Should You Refactor?
When Should You Refactor?
What Do I Tell My Manager?
Problems with Refactoring
Refactoring and Design
Refactoring and Performance
Where Did Refactoring Come From?
Chapter 3: Bad Smells in Code (by Kent Beck and Martin Fowler)
Duplicated Code
Long Method
Large Class
Long Parameter List
Divergent Change
Shotgun Surgery
Feature Envy
Data Clumps
Primitive Obsession
Switch Statements
Parallel Inheritance Hierarchies
Lazy Class
Speculative Generality
Temporary Field
Message Chains
Middle Man
Inappropriate Intimacy
Alternative Classes with Different Interfaces
Incomplete Library Class
Data Class
Refused Bequest
Comments
Chapter 4: Building Tests
The Value of Self-testing Code
The JUnit Testing Framework
Adding More Tests
Chapter 5: Toward a Catalog of Refactorings
Format of the Refactorings
Finding References
How Mature Are These Refactorings?
Chapter 6: Composing Methods
Extract Method
Inline Method
Inline Temp
Replace Temp with Query
Introduce Explaining Variable
Split Temporary Variable
Remove Assignments to Parameters
Replace Method with Method Object
Substitute Algorithm
Chapter 7: Moving Features Between Objects
Move Method
Move Field
Extract Class
Inline Class
Hide Delegate
Remove Middle Man
Introduce Foreign Method
Introduce Local Extension
Chapter 8: Organizing Data
Self Encapsulate Field
Replace Data Value with Object
Change Value to Reference
Change Reference to Value
Replace Array with Object
Duplicate Observed Data
Change Unidirectional Association to Bidirectional
Change Bidirectional Association to Unidirectional
Replace Magic Number with Symbolic Constant
Encapsulate Field
Encapsulate Collection
Replace Record with Data Class
Replace Type Code with Class
Replace Type Code with Subclasses
Replace Type Code with State/Strategy
Replace Subclass with Fields
Chapter 9: Simplifying Conditional Expressions
Decompose Conditional
Consolidate Conditional Expression
Consolidate Duplicate Conditional Fragments
Remove Control Flag
Replace Nested Conditional with Guard Clauses
Replace Conditional with Polymorphism
Introduce Null Object
Introduce Assertion
Chapter 10: Making Method Calls Simpler
Rename Method
Add Parameter
Remove Parameter
Separate Query from Modifier
Parameterize Method
Replace Parameter with Explicit Methods
Preserve Whole Object
Replace Parameter with Method
Introduce Parameter Object
Remove Setting Method
Hide Method
Replace Constructor with Factory Method
Encapsulate Downcast
Replace Error Code with Exception
Replace Exception with Test
Chapter 11: Dealing with Generalization
Pull Up Field
Pull Up Method
Pull Up Constructor Body
Push Down Method
Push Down Field
Extract Subclass
Extract Superclass
Extract Interface
Collapse Hierarchy
Form Template Method
Replace Inheritance with Delegation
Replace Delegation with Inheritance
Chapter 12: Big Refactorings (by Kent Beck and Martin Fowler)
Tease Apart Inheritance
Convert Procedural Design to Objects
Separate Domain from Presentation
Extract Hierarchy
Chapter 13: Refactoring, Reuse, and Reality (by William Opdyke)
A Reality Check
Why Are Developers Reluctant to Refactor Their Programs?
A Reality Check (Revisited)
Resources and References for Refactoring
Implications Regarding Software Reuse and Technology Transfer
A Final Note
References
Chapter 14: Refactoring Tools 401 (by Don Roberts and John Brant)
Refactoring with a Tool
Technical Criteria for a Refactoring Tool
Practical Criteria for a Refactoring Tool
Wrap Up
Chapter 15: Putting It All Together (by Kent Beck)
References
List of Soundbites
List of Refactorings
Index
What Our Readers Are Saying
Be the first to add a comment for a chance to win!
Product Details
- ISBN:
- 9780201485677
- Subtitle:
- Improving the Design of Existing Code
- Contribution:
- Beck, Kent
- Contribution:
- Beck, Kent
- Contribution:
- Brant, John
- Author:
- Contribution:
- Brant, John
- Author:
- Publisher:
- Addison-Wesley Professional
- Location:
- Reading, MA :
- Subject:
- Programming - General
- Subject:
- Programming - Object Oriented Programming
- Subject:
- Object-oriented programming (computer science
- Subject:
- Computer programs
- Subject:
- Software refactoring
- Subject:
- Object-oriented programming
- Copyright:
- 1999
- Edition Number:
- 1st
- Edition Description:
- Includes bibliographical references.
- Series:
- Addison-Wesley Object Technology Series
- Publication Date:
- June 1999
- Binding:
- Hardcover
- Language:
- English
- Illustrations:
- Yes
- Pages:
- 464
- Dimensions:
- 9.54x7.60x1.41 in. 2.48 lbs.










