2 Hoch 64

In Zeiten von Epidemien wie Corona oder HIV kommt die Diskussion immer wieder auf das exponentielle Wachstum zurück. Eine mathematische Funktion, die trotz aller anderslautenden Äußerungen, vom menschlichen Verstand nicht wirklich erfasst werden kann. Mein erstes Zusammentreffen mit dieser eigentümlichen Wachstumsfunktion, war eine Scherzfrage, die wir Kinder damals falsch beantworteten. “Eine Seerose hat nach drei … Weiterlesen

Hin und Her mit Enums

Immer wieder kommt es vor, dass bei der Integration verschiedener Systeme von einer Enum Darstellung in eine andere konvertiert werden muss. Wer dem Fluch ausgesetzt ist, automatisch generierten Source-Code verwenden zu müssen, kennt dieses Ärgernis zur Genüge. Der Dummheit der Source-Code Generatoren gedankt, muss der Entwickler mit einer Vielzahl strukturell ähnlicher Klassen jonglieren.

Agile Anti-Pattern – Lunar Lie

Anti-Pattern sind die schwarzen Schafe unter den Pattern. Sie zeigen eine schlechte Lösung für ein bekanntes Problem. Damit helfen sie aber auf zweierlei Weise, sie warnen vor falschen Entscheidungen und sie helfen bei der Analyse, wenn irgendwas nicht richtig läuft.

Kalenderspielereien mit Java – iCalendar

Neue Anforderungen und Anwendungsfälle für selbstgeschrieben Bibliotheken ergeben sich häufig in Gesprächen mit Kollegen. In diesem Fall benötigte der Kollege eine Feiertagsliste für seinen Kalender. Die Bibliothek zur Feiertagsberechnung war für sein Problem unzureichend.

Das Mimikri Muster

Immer wieder müssen Software Entwickler neue APIs aus dem Boden stampfen und sich dabei überlegen, wie sie die neue API denn gestalten wollen. Es gibt eine Unmenge von Möglichkeiten, wie man Klassen und Methoden benennt, welche Pattern die API nutzt und welches grundlegende Konzept verfolgt wird.

Immutables

Pyramide

In der objektorientierten Softwareentwicklung können Objekte in zwei unterschiedliche Kategorien eingruppiert werden. Entweder sie sind nicht veränderbar (immutable) oder veränderbar (mutable).
Diese Unterscheidung hat nicht nur eine philosophische Größe, sie zeigt auch Konsequenzen in der tagtäglichen Programmierung. Der Großteil der Klassen, mit dem der Entwickler in Berührung kommt sind Mutables.

Kalenderspielereien mit Java – I18N

Die ersten drei Beiträge dieser Reihe handelten von einer Java API zur Feiertagsberechnung. In diesem Beitrag geht es um eine nachtragliche Verbesserung der Internationalisierung (I18N) und der minimalinvasiven Implementierung mit Hilfe des Decorator Design-Pattern.

Sortieren auf Teufel komm raus

Kaum ein Bereich in der Software Entwicklung gebiert so furchtbare Töchter wie die Sortierung. Obwohl die Java Standard Bibliothek viele wunderbare Klassen bereitstellt, finden sich immer wieder Programmierer, die ihre eigenen Holzwege schaffen.

Arbeiten mit FreeMarker Templates

Schaut man in irgendeine Code-Basis, dann finden sich immer Fragmente, die zur Generierung von Textdarstellungen dienen. Ob es sich um Inhalt einer Bestätigungs-Email, die Ausgabe von Rechnungsläufen oder eines Statusreports handelt. Je nach technologischer Reife der Systeme finden sich zur Erzeugung solcher Texte einfache String-Konkatenationen, String.printf Lösungen auf Konstanten oder Dateien, fluent Builder-APIs, eigene Template Engines oder erprobte Lösungen wie etwa FreeMarker.

Repeating Annotations

Lange war es in Java nicht möglich eine Annotation an einer bestimmten Position mehrfach anzugeben. Dieses Manko wurde erst in der Java Version 8 durch Repeating Annotationsbehoben.

Im Beitrag Hamcrest Matcher Generator wurde die @Hamcrest Annotation vorgestellt. Diese Annotation gestattet es, für eine angegebene Klasse, Hamcrest Matcher automatisch zu erstellen.
Leider kann in der initialen Version des Generators immer nur eine @HamcrestAnnotation an einer Klasse stehen.