Fun with Refactoring
Leider verhält es sich mit TODOs wie mit den Flaggen an Nord- und Südpol. Sie überdauern die Jahre und sehen hin und wieder enttäuschte Gesichter von Abenteurern, die zu spät gekommen sind.
Thoughts on agile software development
Leider verhält es sich mit TODOs wie mit den Flaggen an Nord- und Südpol. Sie überdauern die Jahre und sehen hin und wieder enttäuschte Gesichter von Abenteurern, die zu spät gekommen sind.
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.
Wer sich schon einmal an einer Staffelei versucht hat, der weiß, wie wichtig es ist, hin und wieder einen Schritt zurückzugehen. Der Schritt zurück gibt dem Maler die Möglichkeit, sein Werk im Ganzen zu betrachten. Häufig verliert der Künstler bei den Detailarbeiten das Gesamtwerk aus den Augen. Dann kann es passieren, dass die verschiedenen Bildbereiche … Read more
Einer der wichtigsten Frameworks, um Unit Tests in Java zu schreiben, ist wohl Mockito. Kaum ein Projekt kommt ohne die Möglichkeit aus, Abhängigkeiten in den Testmethoden durch Mock Objekte zu ersetzen.
Leider ist jedes hilfreiche Framework in der Software Entwicklung auch eine Pandora Büchse
Lange Zeit habe ich mir das JUnit 5 Feature Test Interfaces nicht angeschaut, vermutlich weil mir default Methoden in Interfaces noch immer ein wenig suspekt sind. Langsam freunde ich mir mit diesen eigenartigen Schimären an und freue mich, endlich ein schönes Beispiel für Test Interfaces gefunden zu haben.
Die Verwendung von boolschen Ausdrücken ist ein Faktor, der die Lesbarkeit und das fehlerfreie Verständis eines Algorithmus maßgeblich beeinflusst. Schon im Beitrag Zauberei mit Wahrheiten wurden einige Probleme von komplizierter Logik angesprochen. Hier nun ein paar neue Beispiele für Code Smells, die sich um Wahrheitswerte ranken.
Liest ein Entwickler seine Source ein zweites Mal, dann findet er mindestens drei Dinge die ihm nicht gefallen. Es gibt immer ein Design-Pattern, das hätte verwendet werden können, eine Bibliothek, die den Code kompakter gestaltet hätte oder ein Algorithmus, der alles vereinfachen würde. Die tatsächliche Implementierung eines Features ergibt sich aus Erfordernissen, Erfahrung und Eingebung des Moments. So kann es immer wieder passieren, dass dem Entwickler die ein oder andere gute Idee nicht in den Sinn kommt.
“Die Behandlung dieser einzigartigen Störung oder mehr oder weniger ihre vollständige Behandlung bleibt noch zu entwickeln.“— Georges Gilles de la Tourette Kennen Sie diese Entschuldigungen? “Wir hatten wenig Zeit“, “Für Reviews stand kein Kollege zur Verfügung“, “Da reglementiert uns keine Checkstyle Regel“, “Was Sonarqube nicht bemerkt, hat ausreichende Qualität“? Und natürlich die die Mutter aller … Read more
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. In diesem … Read more
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 … Read more