XP Days Germany

Praxisbericht: Entwicklung einer Testbibliothek mit einem Fluent Interface (Marko Schulz)

Klassisch werden objektorientierte Schnittstellen nach einem get/set/do-Muster gestaltet:

     Zeitspanne spanne = new Zeitspanne();

     spanne.setStartStunde(10);

     spanne.setStartMinute(15);

     spanne.setEndeStunde(11);

     spanne.setEndeMinute(45);

      int min = spanne.getDauerInMinuten();

     spanne.verlängerUmMinuten(30);

Eine völlige Abkehr von diesem Schnittstellenstil stellen Fluent Interfaces (http://www.martinfowler.com/bliki/FluentInterface.html) dar, mit denen man einen eher "flüssig lesbaren" Quelltext bei der Benutzung der Objekte erhalten soll:

     Zeitspanne spanne = Zeitspanne.von(10,15).bis(11,45);

Als die Erzeugung der Testobjekte für Unittests in einem Projekt immer komplizierter wurde, wurde für deren Erstellung eine eigene Bibliothek geschrieben und hierbei der Schnittstellenstil eines Fluent Interfaces verwendet. Das hat zum Teil gut geklappt und zum Teil Probleme bereitet.

In diesem Vortrag soll nicht nur der Ansatz vorgestellt werden und warum er in diesem Fall gewählt wurde, der Schwerpunkt liegt auf den Erfahrungen und Problemen, die hier damit gemacht wurden. Dabei geht es nicht nur um die technischen Schwierigkeiten in der Entwicklung und Benutzung, sondern auch z.B. auch um "menschliche Faktoren", z.B. die Probleme dabei, solch einen alternativen Schnittstellenstil allen Entwicklern zu vermitteln.

(Anmerkung: Es geht um keine allgemeine Programmbibliothek zur Erzeugung von Testobjekten. Die entstandene Bibliothek war speziell für das eine Projekt. In dem Vortrag geht es deswegen um Erfahrung, die man bei einer solchen Entwicklung macht.)

Über den Speaker

Stefan RoockMarko Schulz versteht Sofwareentwicklung als einen ganzheitlichen Vorgang, den man nicht mit einem Messer in Bestandteile wie Vorgehensmodell, Architektur, Prozessmethodik, Programmierung, Analyse tranchieren kann. Als freier Berater und agiler Softwareentwickler ist er deswegen seit Jahren in Projekten tätig, stets mit eine Blick auf das Ganze.