Die Idee zu "Prefactoring" ist während einer BOF-Session auf einer Konferenz in Washington D.C. entstanden. Ken Pugh hat sich in dieser Session u.a. mit Martin Fowler und Ron Jeffries darüber ausgetauscht, warum Softwaresysteme Refactorings benötigen und welche Praktiken helfen können, die Notwendigkeit für Refactorings zu minimieren. Der Autor hat daraufhin eine Liste von Richtlinien zum Softwareentwurf zusammengefasst und dieser den Titel "Prefactoring" gegeben.
In lockerem amerikanischen Englisch werden die einzelnen Richtlinien anhand eines fiktiven Beispiels gezeigt und besprochen. Über einen iterativen Prozess wird dabei Anforderung für Anforderung eingeführt und das Lesen durch teilweise sehr unterhaltsame Dialoge aufgefrischt. Ähnlich wie im Klassiker "The Pragmatic Programmer" von Hunt und Thomas werden dabei zu jeder Lektion passende Leitsätze herausgestellt. Richtlinien wie "Don’t reinvent the wheel" oder "Don't repeat yourself" werden aber im Prinzip in fast jedem besseren Buch über Softwaredesign genannt. Und genau das ist "Prefactoring": Softwaredesign. Andere Leitsätze lauten dann z.B. "Clumb Data so There Is Less To Think About", "Use the Client’s Language" oder "The Easiest Code to Debug Is That Which Is Not Written". Insgesamt enthält das Buch 65 solcher Ratschläge, manche trivial, andere wertvoll. Wirklich neue Erkenntnisse sind in diesem Buch aber leider kaum zu finden. Auch werden die einzelnen Themen meistens nur sehr oberflächlich behandelt, sodass es für Anfänger wahrscheinlich schwierig ist, die Leitsätze wirklich zu verinnerlichen und zu verstehen. Was mich beim Lesen des Buches aber am meisten gestört hat, ist, dass der Begriff "Prefactoring" tatsächlich als neue Idee vorgestellt wird, mit der die Anzahl an Refactorings minimiert werden soll.
Zusammenfassend gefällt mir der lockere Schreibstil und dass die einzelnen Lektionen in eine Geschichte verwoben sind. Aus diesem Grund und weil das Buch mit 200 Seiten recht kurz ist, fehlt es allerdings an vielen Stellen an der nötigen Tiefe. Thematisch ähnliche Werke wie "The Pragmatic Programmer" oder "Domain-Driven Design" sind diesem Buch klar vorzuziehen.








