Prefactoring: Extreme Abstraction, Extreme Separation, and Extreme Readability
Developers often run into the same issues on every project. As the software is created, design problems start to creep in-causing maintenance releases with no new features, project delays, and worse. While some of these problems can be resolved by simple refactoring, others can be fixed only by a complex code restructuring effort. But you can avoid most these issues in the first place with prefactoring-using your experiences in previous projects and the experiences of others to help in early detection of common design errors and problems. Ken Pugh shares guidelines such as "When You're Abstract, Be Abstract All the Way", "If It's a Collection, Make It a Collection", "Consistency is Simplicity", "Separate Policy from Implementation", "Write Your Code So the Customer Can Read It:, and "It's Easier to Lump a Splitter than to Split a Lumper." Ken demonstrates specific examples of each guideline along with stories of projects where a guideline was not followed.