shopping cart
Call us:  800-878-7323 HELP
McAfee SECURE helps keep you safe from identity theft, credit card fraud, spyware, spam, viruses and online scams.
Guests | October 15, 2009

Michelle Wildgen: IMG A Few Initial and Not-Comprehensive Meditations on Group Novels



I am a sucker for a book about a group. What reminded me of this was Joanna Smith Rakoff's A Fortunate Age, her homage to Mary McCarthy's endlessly re-readable... Continue »

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

ISBN13: 9780201485677
ISBN10: 0201485672
Condition: Standard
Dustjacket: None
All Product Details

Only 2 left in stock at $40.00!

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 Code, 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.

0201485672B04062001

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:

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.

About the Author

Martin Fowler is the Chief Scientist of ThoughtWorks, an enterprise-application development and delivery company. He's been applying object-oriented techniques to enterprise software development for over a decade. He is notorious for his work on patterns, the UML, refactoring, and agile methods. Martin lives in Melrose, Massachusetts, with his wife, Cindy, and a very strange cat. His homepage is http://martinfowler.com.

Kent Beck consistently challenges software engineering dogma, promoting ideas like patterns, test-driven development, and Extreme Programming. Currently affiliated with Three Rivers Institute and Agitar Software, he is the author of many Addison-Wesley titles.

John Brant and Don Roberts are the authors of the Refactoring Browser for Smalltalk, which is found at http://st-www.cs.uiuc.edu/~brant/RefactoringBrowser/. They are also consultants who have studied both the practical and theoretical aspects of refactoring for six years.

William Opdyke's doctoral research on refactoring object-oriented frameworks at the University of Illinois led to the first major publication on this topic. He is currently a Distinguished Member of Technical Staff at Lucent Technologies/Bell Laboratories.

John Brant and Don Roberts are the authors of the Refactoring Browser for Smalltalk, which is found at http://st-www.cs.uiuc.edu/~brant/RefactoringBrowser/. They are also consultants who have studied both the practical and theoretical aspects of refactoring for six years.

Table of Contents

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.

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?

3. Bad Smells in Code.

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.

4. Building Tests.

The Value of Self-testing Code.

The JUnit Testing Framework.

Adding More Tests.

5. Toward a Catalog of Refactorings.

Format of the Refactorings.

Finding References.

How Mature Are These Refactorings?

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.

7. Moving Features Between Objects.

Move Method.

Move Field.

Extract Class.

Inline Class.

Hide Delegate.

Remove Middle Man.

Introduce Foreign Method.

Introduce Local Extension.

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.

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.

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.

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.

12. Big Refactorings.

Tease Apart Inheritance.

Convert Procedural Design to Objects.

Separate Domain from Presentation.

Extract Hierarchy.

13. Refactoring, Reuse, and Reality.

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.

14. Refactoring Tools.

Refactoring with a Tool.

Technical Criteria for a Refactoring Tool.

Practical Criteria for a Refactoring Tool.

Wrap Up.

15. Putting It All Together.

References.

List of Soundbites.

List of Refactorings.

Index. 0201485672T04062001

Product Details

ISBN:
9780201485677
Subtitle:
Improving the Design of Existing Code
Contribution:
Beck, Kent
Contribution:
Brant, John
Contribution:
Beck, Kent
Author:
Opdyke, William
Author:
Roberts, Don
Author:
Fowler, Martin
Author:
Beck, Kent
Author:
Brant, John
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
Subject:
Programming / Object Oriented
Subject:
Object-oriented pro
Copyright:
Edition Number:
1st
Edition Description:
Includes bibliographical references.
Series:
Addison-Wesley Object Technology Series
Publication Date:
June 1999
Binding:
Hardcover
Grade Level:
Professional and scholarly
Language:
English
Illustrations:
Yes
Pages:
464
Dimensions:
9.54x7.60x1.41 in. 2.48 lbs.

Other books you might like

  1. $42.00 Used Hardcover add to wish list
  2. $20.00 Used Hardcover add to wish list
  3. $60.25 New Hardcover add to wish list
  4. $39.95 Used Trade Paper add to wish list
  5. $23.50 Used Trade Paper add to wish list
  6. $38.50 New Trade Paper add to wish list

    Programming Pearls 2ND Edition

    Jon Louis Bentley

Related Aisles

  • back to top

Powell's City of Books is an independent bookstore in Portland, Oregon, that fills a whole city block with more than a million new, used, and out of print books. Shop those shelves — plus literally millions more books, DVDs, and eBooks — here at Powells.com.