PREFACE
1 INTRODUCTION TO PREFACTORING
What Is Prefactoring?
The Three Extremes
The Guidelines Explored
The Context for This Book
2 THE SYSTEM IN SO MANY WORDS
Meet Sam
Reinvention Avoidance
What's in a Name?
Splitters Versus Lumpers
Clumping
Abstracting
Prototypes Are Worth a Thousand Words
3 GENERAL DEVELOPMENT ISSUES
Start with the Big Picture
Interface Contracts
Validation
Code Communicates
Consistency Is Simplicity
A Prefactoring Attitude
Don't Repeat Yourself
Documentation of Assumptions and Decisions
Dealing with Deuiations and Errors
Speeding
The Spreadsheet Conundrum
Tools Are Tools--Use Them Wisely
4 GETTING THE BIG PICTURE
The Rest of the Story
Process
The Initial Design
Global Planning, Local Designing
Testing Functionality
Testing quality
Security
5 GOT CLASS ?
Categories and Classes
Declaration Versus Execution
Appropriate Inheritance
Communicate withext
More Than One
6 A FEW WORDS ON CLASSES
Honor the Class Maxims
Three Laws of Objects
Need Determines Class
Polymorphism
One Little.lob
Policy Versus Implementation
Extreme Naming
Overloading Functions
7 GETTING THERE
Where We Are
Separating Concerns
Migrating to the New System
8 THE FIRSTRELEASE
The Proof Is in the Puddin.~
Relrospective Time
The System as It Stands Now
Operations Interface
Abstract Data Types
Configuration
Testing
Dealing with Deuiations and Errors
A Little Prefactofing
The First Released Iteration
Sometimes Practice Does Not Match Theory
The Rest of the Classes
9 ASSOCIATIONS AND STATES
Sam's Neuw Requirement
Who's in Charge?
The State of an Object
]0 INTERFACES AND ADAPTATION
The Catalog Search Use Case
Designinn the Interface
Interface Development
Interface Testing
Interface Splitting
Something Worlking
11 ZIP CODES AND INTERFACES
Adaptation
Pass the Buck
Unwritten Code
Indirection
Logging
Paradigm Mismatch
12 MORE REPORTS
Fancy Reports
Change Happens
Exports
13 INVOICES, CREDIT CARDS, AND DISCOUNTS
The Next Step
The Language of the Client
Security and Priuacy
14 SAM IS EXPANDING
The Second Store
A New Development
The Third Store
Goodbye Sam
Generality
15 A PRINTSERVER EXAMPLE
Introduction
The System
The Message
Testing
Logging
Still More Separation
Epilogue
]6 ANTISPAM EXAMPLE
The Context
Spare Checking
The ReceivingMailServer
ReceivedMailExaminer
The Full Flow
17 EPILOGUE
A GUIDELINES AND PRINCIPLES
B SOURCE CODE
INDEX