Fluent Builder statt komplexe Konstruktoren

Immer wieder trifft man auf Klassen die diverse Parametern für ihre Konstruktoren gebrauchen. Abgesehen davon, dass zu viele Parameter ein Code Smell sind, kann es je nach Typ der Parameter auch schon einmal zu einer Verwechslung kommen.

Guard Decorator

Das Decorator Pattern bietet die Möglichkeit einem Objekt dynamisch zusätzliches Verhalten hinzuzufügen. Dazu werden Klassen die einen gemeinsamen Basistyp haben, ineinander geschachtelt.  Ein sehr bekanntes Beispiel für das Decorator Pattern ist in den Java IO Klassen zu finden. Zum Lesen aus einem Stream, wird die Klasse InputStream, bzw. eine ihrer vielen Subklassen verwendet. InputStream stream … Weiterlesen

Befreit die APIs von Nullen

In vielen Schnittstellen werden noch immer null Werte zurück geliefert. Das führt zu aufwendigen Code in der eigenen Anwendung, da alle Rückgabewerte auf null geprüft werden müssen. Dieses Beispiel prüft, ob der Name des Vaters gesetzt ist und nicht leer ist. Dabei müssen die Rückgabewerte zwei mal geprüft werden, da sonst ggf. eine NullPointerException geworfen wird. … Weiterlesen

Das Gift der Legacy Software

Jeder kennt Software die unter dem Euphemismus Legacy Software in vielen Firmen ihr Unwesen treibt. Obwohl in einer Hochsprache geschrieben, spürt man ihre Verwandtschaft mit Assembler Routinen und Shell Skripten. Generationen von missgelaunten Programmierern, Aushilfen und Praktikanten haben einen, vor Jahren noch recht ansehnlichen Entwurf, in etwas abgrundtief hässliches verwandelt. Das Problem mit dieser Software … Weiterlesen

Noch mehr Besucher

Im vorherigen Beitrag wurde das Visitor Pattern auf ein Enum angewendet, um das Enum nicht mit vielen Methoden zu überfrachten. Wie andere Klassen sollte ein Enum nicht gegen die Prinzipien des objektorientierten Designs verstoßen. Die vorgestellte Lösung funktioniert zwar sehr gut, aber was soll der Entwickler machen, wenn neue Klassen die Bühne betreten? Nachdem er also ein … Weiterlesen

Zu Besuch bei den Enums

Die Enums in Java sind eine typsichere Alternative zu den früher verwendeten Konstanten. Mit solchen Konstanten hat man die üblichen Probleme, dass man sie überall fehlerhafter Weise einsetzen oder anstelle der Konstanten andere Werte des Typs verwenden kann. Besser also der Einsatz von Enums, die als echter Typ nur die definierten Konstanten zulassen. Enums erlauben … Weiterlesen

Cargo Cult Programming

Manche Entwickler halten Copy&Paste für das schlimmste Anti-Pattern in der Software Entwicklung. Leider muss man ihnen sagen, dass es noch schlimmer geht. Cargo Cult Programming ist die Verwendung von Pattern ohne sie zu verstehen. Dabei kopieren die Entwickler bestehenden Programmcode in der oft irrigen Annahme, dieser Programmcode wäre notwendig. Der folgende Programmcode entstammt einer tatsächlichen existierenden … Weiterlesen