Fluent Builder statt komplexe Konstruktoren

“Code is like humor. When you have to explain it, it’s bad.” – Cory House 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. public Profile(String firstName, … Weiterlesen

The Sixth Sense of Company Culture

„I see people, they don’t know they are dead“ – Cole Sear You may know Cole Sear, the young boy from the movie „The Sixth Sense“. He saw and spoke with dead people, most of them angry, sad or lethargic. They all didn’t realized, that they are dead. They ignored all signs and tried to life … Weiterlesen

SNAFU

SNAFU (Situation Normal, All Fucked Up) ist ein Akronym aus der amerikanischen Soldatensprache. Das SNAFU-Prinzip von den Roman Autoren Robert Anton Wilson und Robert Shea besagt, dass innerhalb von Hierarchien immer wichtige Informationen zurückgehalten werden. Vorgesetzte geben nicht alle Informationen an ihre Untergebenen weiter, um einen Informationsvorsprung zu behalten oder ihre Inkompetenz zu kaschieren. Untergebene verheimlichen … Weiterlesen

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

Double Array Tries

Seit Jahren schaue ich mir immer wieder mal den Artikel „An Efficient Implementation of Trie Structures“ von Aoe, Morimot und Sato an. Es ist eines meiner Steckenpferde, obwohl ich selber keine eigene Implementierung in Java beendet oder jemals Tries in meinen Projekten verwendet habe. Ein Trie ist ein Suchbaum, dessen Zweige Zeichen repräsentieren und jeder … Weiterlesen

Refactoring mit Guard Clauses

Immer wieder finden sich Codefragmente, die sich in einer unnötig komplizierten Logik verlieren. Wie schon in Zauberei mit Wahrheiten angesprochen, sind es meist unterlassene Umstellungen im Code durch boolsche Umformungen. Parameter prüfen Eine häufige Ursache für die komplizierte Logik, ist die Prüfung der Eingangsparameter. Nicht alle Werte, die ein Parameter enthalten kann, machen Sinn für die … Weiterlesen

Von Beinahe-Zusammenstößen auf Fußwegen

Wenn sie diesen Beitrag gelesen haben, dann werden sie wissen, dass ich ein Linkshänder bin, bzw. ein Linksabdreher. Aber sie werden dann auch verstehen, warum wir Menschen manche Dinge völlig unterschiedlich wahrnehmen und einfache Mathematik dies erklärt. Zu Kollisionen kommt es immer dann auf einem Fußweg, wenn die Entgegeneilenden  in unterschiedliche Richtungen ausweichen und deshalb … Weiterlesen

Die Zunft der Software Entwickler

Um die Tätigkeiten von Software Entwicklern rankt sich eine Hecke von Unkenntnis und Ignoranz. Fast allen Führungskräften, Kollegen und vielen Akteuren ist nicht klar, was sie da eigentlich tun. Vermutlich hat es etwas mit dem Arbeitsplatz zu tun, der so vielen anderen Arbeitsplätzen ähnelt. Ein Schreibtisch mit einem Computerterminal. Während sich aber beim Chef nur Terminpläne, Kostenrechnungen und Email-Korrespondenz finden, entdeckt man beim Softwareentwickler eine ganze Werkstatt voller Werkzeuge. Der Programmierer ist ein Handwerker und wenn man ganz genau hinschaut, ein Kunsthandwerker.

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