Preface
THE ART OF PREFACTORING APPLIES TO NEW PROJECTS THE INSIGHTS INTO DEVELOPING SOFTWARE YOU HAVE GLEANED FROM YOUR EXPERIENCE, as well as the experience of others, in developing software to new projects. The name of this book plays upon the term refactoring, popularized in Martin Fowler's book, Refactoring: Improving the Design of Existing Code (Addison-Wesley Professional, 1999). Refactoring is the practice of altering code to improve its internal structure without changing its external behavior.
This book delineates prefactoring guidelines in design, code, and testing. Applying the guidelines in this book does not guarantee that you will never need to refactor your design or code. However, you might decrease the amount of refactoring that is required.
Many of these guidelines are derived from the experiences of numerous developers over several years. Analyzing how code might have been initially developed to alleviate the need for refactoring produced other guidelines. Like Extreme Programming, some of the guidelines might seem extreme. Many revolve around the concepts of Extreme Abstraction, Extreme Separation of Concerns, and Extreme Readability.
Some guidelines contain references to design patterns. Design patterns are standard solutions to common problems in software design. The concept of software design patterns was popularized in Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (Addison-Wesley ...