Donnerstag, 17. April 2008

Dieser Blog ist tot. Ich blogge weiter auf dem «Agile Trail».

Artikel 'Entwurfsmuster: Flexibel programmieren mit dem Fluent Interface'

Fünf Jahre ist es her, dass ich das letzte Mal einen Artikel veröffentlicht habe. Man kommt ja zu nix mehr neben der Arbeit und dem Laufen. Vor einem halben Jahr hatte ich aber mal wieder Lust aufs Artikelschreiben, und das Ergebnis ist jetzt da, in der ix 05/2008 auf Seite 126: Entwurfsmuster: Flexibel programmieren mit dem Fluent Interface.

[Update 13.01.20082009: Den Artikel gibt's jetzt auch online im heise Developer.]

In dem viereinhalbseitigen Artikel entwickle ich schrittweise einen Builder (im Artikel "Erbauer" genannt) zu einem sog. Fluent Builder (im Artikel schreibe ich vom "Flüssigen Erbauer"), also einem Builder mit einem Fluent Interface. Der hat dann einige Vorteile, weil man z.B. eine Grammatik vorgeben kann und so eine domänenspezifische Sprache (DSL) ermöglicht. Dadurch wiederum wird der Builder sehr flexibel verwendbar, ohne dabei Inkonsistenzen zu erzeugen.

Die Bezeichnung Fluent Builder ist nur logisch, wenn man ein Fluent Interface mit einem Builder kreuzt; es haben schon andere ihr Ergebnis so bezeichnet. Allerdings habe ich da nicht geklaut: Der Artikel ist im September 2007 entstanden, wohingegen das erste Auftauchen eines Fluent Builders (der auch das meint, was er bezeichnet) von Dezember 2007 her datiert. Dort wird allerdings das gebaut, was ich in dem Artikel als "Zartschmelzende API" bezeichne und den Evolutionsschritt 2 von 4 kennzeichnet. Im Artikel gehe ich also noch etwas weiter in der Materie.

Der Fluent Builder ist in einem Projekt bei einem großen deutschen Versicherungskonzern entstanden. Dort hatte ich alle vier Entwicklungsstadien, die im Artikel beschrieben sind, durchexerziert, sehr zum Leidwesen meiner Kollegen dort. Auf deren Drängen bei meinen ersten flüssigen Gehversuchen ("Bernd, das ist inkonsistent, da sind die Verantwortungen nicht getrennt, das ist B****hit!") bin ich überhaupt erst soweit gekommen. Und als ich dann endlich soweit war, dass ich auf so ziemlich alle Fragen zur Flüssigen Entwicklung Antworten geben konnte - da wollte ich das nicht jedesmal neu erzählen und hab's aufgeschrieben. "Zweifel nähren das Denkvermögen" (Peter Schumacher), und daher ist dann irgendwann jener Artikel in der ix draus geworden. Speziellen Dank also an Matthias und Andreas für fruchtbare Reibereien.

Danke, Jorina, Stefan, Urs und Matthias, fürs Reviewen. Dank auch an meine Redakteurin Kersten Auel für die sehr gute Betreuung.

Errata
12.05.2008: In Listing 4 müsste es in der ersten Zeile statt
public class AbschnittWertZuStelleDescriptor {
lauten
public class AbschnittWertZuStelleDescriptor<Rueckgabe> {
Danke an Carsten Siedentop für sein Feedback.

blog comments powered by Disqus