Main Page


   
  Table of Contents
 
Refactoring Workbook
By William C. Wake
 
Publisher : Addison Wesley
Pub Date : August 27, 2003
ISBN : 0-321-10929-5
Pages : 224


As a programmer, you need to be able to recognize and improve problematic code, so the program remains in a working state throughout the software lifecycle. Refactoring-the art of improving the design of existing code safely-provides an efficient, reliable system for bringing order to the chaos, and one that keeps the surprises to a minimum! Refactoring can be difficult to learn, but Refactoring Workbook , by consultant William C. Wake, presents the material in a easy-learning format that makes learning enjoyable and effective.

For many, the obstacle to learning refactoring is in identifying the "smells"the potential problem areas-found in code. Instead of having you read about the smells, Refactoring Workbook makes sure you understand them. You'll solve a carefully assembled series of problems, and you'll find yourself learning at a deeper level and arriving at a few insights of your own. Wake uses the workbook methoda learning-focused approach that forces you to apply the techniques presented in the book-in the rest of the book. This approach helps you learn and apply the most important refactoring techniques to your code and, as a side benefit, helps you to think more about creating great code even when you're not refactoring.

Refactoring Workbook provides user -friendly references such as:

  • A handy, quick-reference "smell finder"

  • A standard format for describing smells

  • Appendices showing key refactorings

  • A listing of Java(TM) tools that support refactoring

This book is intended for programmers with a knowledge of Java, though a C# or C++ programmer with a basic understanding of Java would also be able to follow and learn from the examples. It can be used as a companion to Martin Fowler's Refactoring (also from Addison-Wesley Professional), which provides step-by-step instructions for many refactorings.


   
  Table of Contents
 
Refactoring Workbook
By William C. Wake
 
Publisher : Addison Wesley
Pub Date : August 27, 2003
ISBN : 0-321-10929-5
Pages : 224


    Copyright
    Preface
      What Is Refactoring?
      What Are the Goals of This Book?
      Who Is This Book For?
      What Background Do You Need?
      How to Use This Book
      Can I Contact the Author?
      Acknowledgments
      Chapter 1.  Roadmap
      Overview
      Section 1: Smells within Classes
      Section 2: Smells between Classes
      Section 3: Programs to Refactor
      A Word on the Challenges
    Section 1.  Smells Within Classes
        Chapter 2.  The Refactoring Cycle
      What Is Refactoring?
      Smells Are Problems
      The Refactoring Cycle
      When Are We Done?
      Inside a Refactoring
      Challenges
      Conclusion
        Chapter 3.  Measured Smells
      Smells Covered
      Comments
      Long Method
      Large Class
      Long Parameter List
      More Challenges
      Conclusion
        Interlude 1.  Smells and Refactorings
        Chapter 4.  Names
      Smells Covered
      Type Embedded in Name (Including Hungarian)
      Uncommunicative Name
      Inconsistent Names
        Chapter 5.  Unnecessary Complexity
      Smells Covered
      Dead Code
      Speculative Generality
        Interlude 2.  Inverses
        Chapter 6.  Duplication
      Smells Covered
      Magic Number
      Duplicated Code
      Alternative Classes with Different Interfaces
      Challenges
        Chapter 7.  Conditional Logic
      Smells Covered
      Null Check
      Complicated Boolean Expression
      Special Case
      Simulated Inheritance (Switch Statement)
        Interlude 3.  Design Patterns
    Section 2.  Smells Between Classes
        Chapter 8.  Data
      Smells Covered
      Primitive Obsession
      Data Class
      Data Clump
      Temporary Field
        Chapter 9.  Inheritance
      Smells Covered
      Refused Bequest
      Inappropriate Intimacy (Subclass Form)
      Lazy Class
        Chapter 10.  Responsibility
      Smells Covered
      Feature Envy
      Inappropriate Intimacy (General Form)
      Message Chains
      Middle Man
      Challenges
        Chapter 11.  Accommodating Change
      Smells Covered
      Divergent Change
      Shotgun Surgery
      Parallel Inheritance Hierarchies
      Combinatorial Explosion
        Chapter 12.  Library Classes
      Smells Covered
      Incomplete Library Class
      Challenges
        Interlude 4.  Gen-A-Refactoring
    Section 3.  Programs to Refactor
        Chapter 13.  A Database Example
      Course.java (Online at www.xp123.com/rwb )
      Offering.java
      Schedule.java
      Report.java
      TestSchedule.java
      TestReport.java
        Chapter 14.  A Simple Game
      Development Episodes
        Chapter 15.  Catalog
      Introduction
      Path 1: Catalog.itemsMatching(query)
      Path 2: Query.matchesIn(catalog)
      Path 3: Process(catalog.data, query.data)
      Conclusion
        Chapter 16.  Planning Game Simulator
      Part 1: Original Code
      Part 2: Redistributing Features
      Removing Duplication, Selection Troubles, and a Few Burrs
      Part 3: Pushing the Code Further
        Chapter 17.  Where to Go from Here
      Books
      Admonitions
      Exercises to Try
      Web Sites
    Section 4.  Appendixes
        Appendix A.  Answers to Selected Questions
      Chapter 2. The Refactoring Cycle
      Chapter 3. Measured Smells
      Interlude 1. Smells and Refactorings
      Chapter 4. Names
      Chapter 5. Unnecessary Complexity
      Chapter 6. Duplication
      Chapter 7. Conditional Logic
      Interlude 3. Design Patterns
      Chapter 8. Data
      Chapter 9. Inheritance
      Chapter 10. Responsibility
      Chapter 11. Accommodating Change
      Chapter 12. Library Classes
      Interlude 4. Gen-A-Refactoring
      Chapter 13. A Database Example
      Chapter 14. A Simple Game
      Chapter 15. Catalog
      Chapter 16. Planning Game
        Appendix B.  Java Refactoring Tools
        Appendix C.  Inverses for Refactorings
        Appendix D.  Key Refactorings
      Change Bidirectional Association to Unidirectional
      Duplicate Observed Data
      Extract Class
      Extract Method
      Move Field
      Move Method
      Replace Type Code with State/Strategy
      Bibliography