Books & Videos

Table of Contents

  1. Chapter One Introduction to Prefactoring

    1. What Is Prefactoring?

    2. The Three Extremes

    3. The Guidelines Explored

    4. The Context for This Book

  2. Chapter Two The System in So Many Words

    1. Meet Sam

    2. Reinvention Avoidance

    3. What's in a Name?

    4. Splitters Versus Lumpers

    5. Clumping

    6. Abstracting

    7. Prototypes Are Worth a Thousand Words

  3. Chapter Three General Development Issues

    1. Start with the Big Picture

    2. Interface Contracts

    3. Validation

    4. Code Communicates

    5. Consistency Is Simplicity

    6. A Prefactoring Attitude

    7. Don't Repeat Yourself

    8. Documentation of Assumptions and Decisions

    9. Dealing with Deviations and Errors

    10. Speeding

    11. The Spreadsheet Conundrum

    12. Tools Are Tools—Use Them Wisely

  4. Chapter Four Getting the Big Picture

    1. The Rest of the Story

    2. Process

    3. The Initial Design

    4. Global Planning, Local Designing

    5. Testing Functionality

    6. Testing Quality

    7. Security

  5. Chapter Five Got Class?

    1. Categories and Classes

    2. Declaration Versus Execution

    3. Appropriate Inheritance

    4. Communicate with Text

    5. More Than One

  6. Chapter Six A Few Words on Classes

    1. Honor the Class Maxims

    2. Three Laws of Objects

    3. Need Determines Class

    4. Polymorphism

    5. One Little Job

    6. Policy Versus Implementation

    7. Extreme Naming

    8. Overloading Functions

  7. Chapter Seven Getting There

    1. Where We Are

    2. Separating Concerns

    3. Migrating to the New System

  8. Chapter Eight The First Release

    1. The Proof Is in the Pudding

    2. Retrospective Time

    3. The System as It Stands Now

    4. Operations Interface

    5. Abstract Data Types

    6. Configuration

    7. Testing

    8. Dealing with Deviations and Errors

    9. A Little Prefactoring

    10. The First Released Iteration

    11. Sometimes Practice Does Not Match Theory

    12. The Rest of the Classes

  9. Chapter Nine Associations and States

    1. Sam's New Requirement

    2. Who's in Charge?

    3. The State of an Object

  10. Chapter Ten Interfaces and Adaptation

    1. The Catalog Search Use Case

    2. Designing the Interface

    3. Interface Development

    4. Interface Testing

    5. Interface Splitting

    6. Something Working

  11. Chapter Eleven Zip Codes and Interfaces

    1. Adaptation

    2. Pass the Buck

    3. Unwritten Code

    4. Indirection

    5. Logging

    6. Paradigm Mismatch

  12. Chapter Twelve More Reports

    1. Fancy Reports

    2. Change Happens

    3. Exports

  13. Chapter Thirteen Invoices, Credit Cards, and Discounts

    1. The Next Step

    2. The Language of the Client

    3. Security and Privacy

  14. Chapter Fourteen Sam Is Expanding

    1. The Second Store

    2. A New Development

    3. The Third Store

    4. Goodbye Sam

    5. Generality

  15. Chapter Fifteen A Printserver Example

    1. Introduction

    2. The System

    3. The Message

    4. Testing

    5. Logging

    6. Still More Separation

    7. Epilogue

  16. Chapter Sixteen Antispam Example

    1. The Context

    2. Spam Checking

    3. The ReceivingMailServer

    4. ReceivedMailExaminer

    5. The Full Flow

  17. Chapter Seventeen Epilogue

  1. Appendix A Guidelines and Principles

    1. Guidelines

    2. Guidelines in Alphabetical Order

    3. Software Design Principles

  2. Appendix B Source Code

    1. com.samscdrental.configuration Package

    2. com.samscdrental.controller Package

    3. com.samscdrental.dataaccess Package

    4. com.samscdrental.display.adt Package

    5. com.samscdrental.display Package

    6. com.samscdrental.failures Package

    7. com.samscdrental.helper Package

    8. com.samscdrental.importexport Package

    9. com.samscdrental.migration Package

    10. com.samscdrental.model.adt Package

    11. com.samscdrental.model.dto Package

    12. com.samscdrental.model Package

    13. com.samscdrental.reports Package

    14. com.samscdrental.tests Package

  3. Colophon