Thursday, May 11, 2006

Refactoring - Wie Sie das Design vorhandener Software verbessern

von Martin Fowler
Deutsche Ausgabe, 440 Seiten
Addison-Wesley, München 2000
ISBN 3-8273-1630-8

Meine Wertung: 4.5 von 5 Punkten
Mein Amazon-Rating: 4 Sterne (BlueBallon Kurzbewertung auf Amazon.de)


Was unterscheidet guten von schlechtem Code?
Wie erkennt man schlechten Code?
Und - was meist noch wichtiger ist - wie beseitigt man ihn am besten?
Diese Fragen - auf die bei nahezu jedem Programmierprojekt stößt - sind die zentralen Punkte in Martin Fowler Standardwerk "Refactoring".

Es ist ein typisches "Best Practices" - Buch und er beschreibt darin ausführlich und mit viele Beispielen (durchgehend in Java) belegt, wie man schlechte Programmstellen "riechen" kann (er spricht hier von "Code Smells"), was an diesen Stellen eigentlich schlecht ist (zb welche Probleme verursachen überlange Routinen/Methoden?) und liefert für jeden der vorgestellten Problemfälle Schritt-für-Schritt-Rezepte, wie man den Zustand verbessert. Viele der Problemstellungen und -lösungen sind objektorientiert (Veränderungen der Klassenhierarchie, Fabrikmethoden, Klassenextraktion etc), aber viele andere lassen sich auch auf ausschließlich prozeduale Sprachen wie C oder gar Fortran anwenden (zb Vereinfachungen bedingter Ausdrücke, duplizierter Code, lange Routinen etc).
Viel Wert wird auch die Feststellung gelegt, wie wichtig UnitTests als Sicherheitsnetz für die eigentlichen Refactoringvorgänge sind. Konkret vorgestellt wird hierfür das JUnit-Framework, das Grundprinzip läßt sich aber natürlich (mehr oder weniger) auf jede beliebige Programmiersprache bzw Programmierumgebung anwenden.
Erwähnenswert ist vielleicht noch, daß Fowler ja bekanntermaßen ein Verfechter der "Agilen Methoden" ist (er ist ja auch einer der Verfasser des "Agilen Manifests", ein guter Bekannter von Kent Beck sowie der Autor zahlreicher Artikel wie zb Continuous Integration, sodaß es nicht verwunderlich ist, daß praktisch alle in diesem Buch beschrieben Vorgangsweisen sich sehr gut mit den typischen agilen Szenarien in Einklang bringen lassen. Insbesondere betrifft dies das Zerlegen der Aufgaben in kleine Arbeitsschritte, die sich möglichst schnell mit möglichst wenig Risiko umsetzen lassen - und dies ist ja auch für Projekte günstig, die nicht mit einem agilen Prozess arbeiten.

Kurz gesagt, das Buch ist genial, und jeder, der sich halbwegs ernsthaft mit professioneller Programmierung beschäftigt, sollte ein Exemplar davon zumindest in Griffweite haben. Von daher kriegt das Buche eigentlich 5 Punkte mit Rufzeichen, warum also nur 4.5 Punkte bzw 4 Amazon-Sterne?

Weil die Übersetzung ein echter Graus ist!
Addison-Wesley sollte sich hinsichtlich der Auswahl der Übersetzer ein Beispiel an O'Reilly nehmen und doch möglichst Leute nehemn, die etwas mehr vom Fach verstehen (IMHO wird nicht umsonst bei jedem O'Reilly Buch der Übersetzer besonders hervorgehoben und auch sein fachlicher Background beschrieben!) Es ist zwar nicht so, daß dass Buch durch die Übersetzung unverständlich wird, aber ich hab zB schon eine Zeitlang gebraucht zu begreifen, daß mit der Phrase "wandeln Sie um" einfach nur "compilieren" gemeint war.

Aber abgesehen davon - ein Pflichtwerk.

Sunday, April 30, 2006

Why this blog / warum gibts diesen Blog?

(english)
Because since I started buying books online, I found online available reviews very useful to decide if a book is the one I am looking for or not. This blog does not contain the one and only truth, but only my point of view about the books I read. Maybe others find this useful, so this blog will help others reading the right books for the corresponding topic.


(deutsch)
Seit ich begonnen habe, Bücher (insbes Fachbücher) online zu kaufen, habe ich es als sehr hilfreich bei der Auswahl empfunden, die Meinungen anderer zu diesem Buch zu lesen. Dieser Blog enthält nicht die "ultimative finale Wahrheit" über die rezensierten Bücher, sondern nur meine persönliche Meinung - die natürlich sehr von meinen Erwartungshaltungen und Ansprüchen betreffend des jeweiligen Buches geprägt ist. Wenn dieser Blickwinkel auch für andere nützlich ist, so kann dieser Blog vielleicht dabei helfen, die richtigen Bücher zum jeweiligen Thema auszuwählen.

Start: Halex readings (deutsch)

Dieser Blog enthält meine Buchrezensionen - und zwar ausschließlich über Bücher aus dem Themenbereich Computerwissenschaften, Programmierung, Netzwerke - sprich alles was direkt oder indirekt mit Computern zusammenhängt. Der Großteil der Rezensionen ist in deutsch verfaßt, da auch der Großteil der rezensierten Bücher in Deutsch geschrieben ist (bzw es sich um die deutschen Übesetzungen handelt). Englische Bücher werden ggf auch englisch rezensiert. Das Bewertungssystem entspricht dem von Amazon (0-5 Punkte, 5 Punkte ist die Bestbewertung. Manche dieser Rezensionen (zt gekürzt) werden auch beim Bewertungssystem von Amazon(.de) eingetragen, manche uu auch bei Slashdot.

Start: Halex Readings (english abstract)

This blog will contain reviews of books - mainly book about computer science, programming, networking - everyhing about computer related. Most of the posts will be in german, because the most reviews will be about german books. But I will try to write at least english reviews about books written in english. The rating is the same as at Amazon.com (0-5 points, 5 points is best). Some of the reviews may appear at Amazon (.de)(maybe in a shorter form), some may also appear at Slashdot.