HACKER SAFE certified sites prevent over 99.9% of hacker crime.

Nikolai Grozni Read the INK Q&A with Nikolai Grozni and save 30% on Turtle Feet: The Making and Unmaking of a Buddhist Monk.

Turtle Feet $17.46
Hardcover Add to Cart



 
Ships free on qualified orders.
$59.99
HARDCOVER, NEW
Ships in 1 to 3 days
Add to Wishlist
Qty Store Section
3 BeavertonSoftware Engineering- Object Oriented Programming
3 TechnicalSoftware Engineering- Object Oriented Programming


Refactoring: Improving the Design of Existing Code (Addison-Wesley Object Technology Series)
by Martin Fowler

Refactoring: Improving the Design of Existing Code (Addison-Wesley Object Technology Series) Cover

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)

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

Product Details

ISBN:
9780201485677
Subtitle:
Improving the Design of Existing Code
Contribution:
Beck, Kent
Contribution:
Beck, Kent
Contribution:
Brant, John
Author:
Fowler, Martin
Contribution:
Brant, John
Author:
Brant, John
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:
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.