Book Review - Prefactoring by Ken Pugh
Category Book Reviews
Prefactoring - Extreme Abstraction, Extreme Separation, Extreme Readability by Ken Pugh involves a twist on the concept of "refactoring", improving the design of a program (or module) after the fact while retaining the same functionality. Prefactoring is making sure good design techniques are practiced up front to help avoid having to refactor as much later...
Contents: Introduction To Prefactoring; The System In So Many Words; General Development Issues; Getting The Big Picture; Got Class?; A Few Words On Classes; Getting There; The First Release; Associations And States; Interfaces And Adaption; Zip Codes and Interfaces; More Reports; Invoices, Credit Cards, And Discounts; Sam Is Expanding; A Printserver Example; Antispam Example; Epilogue; Guidelines And Principles; Source Code; Index
Pugh runs an imaginary development project (Sam's CD Rental and Lawn Mower Repair) where a new system is built to allow customers to rent CDs. This is currently a manual process, but the owner wants to automate it. By using prefactoring design techniques throughout, the developers are able to build the system such that it's much easier to make changes and design modifications later on without causing major rework. Throughout the book, each step in the process is recapped in a short maxim that makes the concept easy to remember and apply to your own situation. For instance, "Do A Little Job Well And You May Be Called Upon Often - Methods and classes that perform specific jobs can be reused more often" and "Figure Out How To Migrate Before You Migrate - Considering the migration path might help you discover additional consideration in other areas of the design". Personally, it's these little gems that make the book most valuable.
I can see how some people would think this "prefactoring" is nothing more than good design techniques. That's probably a valid point. I don't know that prefactoring is some new revolutionary approach to design that will rank up there with things like agile methodologies and such. But it does allow you to wrap your mind around a general concept ("good design") and develop a framework for improving your skills in that area. For that, it's a valuable read...
Prefactoring - Extreme Abstraction, Extreme Separation, Extreme Readability by Ken Pugh involves a twist on the concept of "refactoring", improving the design of a program (or module) after the fact while retaining the same functionality. Prefactoring is making sure good design techniques are practiced up front to help avoid having to refactor as much later...
Contents: Introduction To Prefactoring; The System In So Many Words; General Development Issues; Getting The Big Picture; Got Class?; A Few Words On Classes; Getting There; The First Release; Associations And States; Interfaces And Adaption; Zip Codes and Interfaces; More Reports; Invoices, Credit Cards, And Discounts; Sam Is Expanding; A Printserver Example; Antispam Example; Epilogue; Guidelines And Principles; Source Code; Index
Pugh runs an imaginary development project (Sam's CD Rental and Lawn Mower Repair) where a new system is built to allow customers to rent CDs. This is currently a manual process, but the owner wants to automate it. By using prefactoring design techniques throughout, the developers are able to build the system such that it's much easier to make changes and design modifications later on without causing major rework. Throughout the book, each step in the process is recapped in a short maxim that makes the concept easy to remember and apply to your own situation. For instance, "Do A Little Job Well And You May Be Called Upon Often - Methods and classes that perform specific jobs can be reused more often" and "Figure Out How To Migrate Before You Migrate - Considering the migration path might help you discover additional consideration in other areas of the design". Personally, it's these little gems that make the book most valuable.
I can see how some people would think this "prefactoring" is nothing more than good design techniques. That's probably a valid point. I don't know that prefactoring is some new revolutionary approach to design that will rank up there with things like agile methodologies and such. But it does allow you to wrap your mind around a general concept ("good design") and develop a framework for improving your skills in that area. For that, it's a valuable read...


