Programmierblog von Johannes Dienst

Block Element Modifier (BEM)

Posted by in Grundlagen

Wenn man CSS/Sass/Less anfängt zu schreiben, dann nimmt man sich normalerweise vor, alles schön sauber zu halten. Das ist zu Anfang sehr einfach, aber ab einer gewissen Größe verliert sich ganz einfach die Struktur. Dann ist ein erster Schritt, die Dateien in logisch gekapselte Unterdateien zu zerlegen. Für mich hat das sehr gut funktioniert. Ein Problem, das sich aber immer wieder in anderen Ausprägungen präsentiert ist der Umgang mit der Namensgebung. Benamung von Dingen ist in meinen Augen eines der zentralen Probleme eines Coders. Speziell im Team wird das eine…read more

0

Die Probleme mit DRY auf Modulebene

Posted by in clean code, Softwarequalität

Das DRY – Don’t Repeat Yourself – Prinzip haben die meisten Entwickler als wichtiges Prinzip verinnerlicht. Um das nüchtern festzustellen: Das Kopieren von Code an sich ist im ersten Moment schmerzlos und geht schnell. Der Entwickler muss sich keine Gedanken über eine sinnvolle Abstraktion oder den Ort des Codes machen, sondern kopiert ihn sich einfach an die benötigte Stelle. Problematisch ist das erst im Fehlerfall. Tritt ein Fehler in einem Codestück auf, das x-Mal dupliziert wurde, dann ist er in allen Duplikaten ebenfalls zu beheben. Meistens wird dann eines davon…read more

0

Java Forum Stuttgart 2017: Erfahrungsbericht

Posted by in Konferenz, Softwarequalität

Das Java Forum Stuttgart 2017 war für mich die letzte Konferenz für die nächsten zwei Monate. Bei hochsommerlichen Temperaturen gab es wie immer mehr Vorträge anzuhören, als man Slots besuchen konnte 🙂 . Das ist immer sehr erfreulich! Die Organisation war schon im Vorfeld sehr gut. Da ich diesmal einen Pecha Kucha Vortrag halten durfte, war die Vorbereitung auch nicht ganz so zeitintensiv. Oliver Böhm, unser Betreuer für diesen Slot, war sehr sorgfältig und versorgte uns mit allen Informationen. Ein herzliches Dankeschön dafür. Erster Vortrag: ReactiveX mit RxJava Jan Blankenhorn…read more

0

Clean Code Days 2017: Erfahrungsbericht

Posted by in clean code, Konferenz

Dieses Jahr war ich zwei Tage auf den Clean Code Days. Leider habe ich am ersten Konferenztag die Keynote von Elmar Jürgens verpasst. Im Gegenzug dafür konnte ich „ausschlafen“ 😉 . Insgesamt scheint die Konferenz, die parallel zur Embedded Testing stattfindet, in der Teilnehmerzahl leicht zu wachsen. Immerhin waren deutlich mehr Aussteller da und es gab mehr Keynotes. Für einen eingefleischten Clean Coder sind ein großer Teil der Vorträge mit vielen bekannten Grundlagen ausgestattet. Jedoch konnte ich von den fortgeschrittenen Themen interessante Ideen mitnehmen. Zu begrüßen waren die Vorträge über…read more

0

Funktionen, die Funktionen zurückgeben, die Funktionen …

Posted by in clean code, funktionale Programmierung, funktionales Programmieren, JavaScript

Als ich mich das erste Mal mit funktionaler Programmierung beschäftigt habe, war mir überhaupt nicht klar, wo mir diese ganzen exotischen Konzepte nützen könnten. Inzwischen habe ich viel über dieses Paradigma gelernt und bei manchen Denkansätzen gab es einen richtigen AHA-Effekt. Ein interessanter Einsatz von Funktionen als Objekte liegt in Funktionen, die Funktionen generieren. Damit kann man sehr interessante Dinge anstellen. Genau das habe ich vor ein paar Wochen getan. Von der Lösung war ich richtig begeistert, die damit so einfach entstanden ist. Diese Begeisterung möchte ich gerne teilen! Das…read more

0

JavaScript-Strukturierung für HTML: Kopplung minimieren

Posted by in clean code, JavaScript

In der letzten Woche kam eine interessante Frage zum Aufbau einer modularen JavaScript-Codebase auf. Es ging vor allem darum, wie eine bestimmte Funktionalität auf unterschiedlichen HTML-Seiten aktiviert wird. Da es mehrere Module mit unterschiedlichen Features gibt, standen mehrere Ansätze zur Diskussion. Das Problem mit webpack In unserem Projekt werden alle Module mit webpack zu einer bundle.js zusammengefasst, die dann auf jeder Seite eingebunden wird. Das JavaScript ist modularisiert in ES2015 Modulen. Die Aktivierung der Funktionalität läuft über die Instanziierung von Klassen, deren Konstruktor über jQuery DOM-Elemente mit EventListenern versorgt. Soweit…read more

0

Clean Code: Meine Erfahrungen im orangenen Grad

Posted by in clean code

Nachdem mein letzter Bandwechsel schon über zwei Jahre her ist, werde ich heute in den gelben Grad wechseln. Meine Erfahrungen mit dem orangenen Grad waren gemischt. Einige Prinzipien und Praktiken waren selbstverständlich, andere wiederum echte Augenöffner! Prinzipien An dem Single Level of Abstraction (SLA) Prinzip habe ich ziemlich lange geknabbert, bis ich es endlich überall durchziehen konnte. Es verlangt einem tatsächlich ab, viel Arbeit in seinen Code zu stecken. Nur durch sinnvolles Refactoring kann man sicherstellen, dass es auch eingehalten wird. Der Code wirkt dadurch aber grundsätzlich aufgeräumter und hat…read more

0

Mutationstesten: Abgrenzung zu anderen Testverfahren

Posted by in Softwarequalität, Testverfahren

Mutationstesten ist ein Verfahren, um Tests aussagekräftiger zu machen. Es ist quasi der Goldstandard unter den Testabdeckungsmetriken. Warum? Es prüft nicht nur, ob eine Zeile Code abgedeckt wurde, sondern auch, ob der/die dazugehörige(n) Test(s) tatsächlich Fehler in dieser Zeile finden können. Dazu werden kleine absichtlich kleine Fehler in den Code eingebaut (Mutationen), die von der Testsuite gefunden werden sollten. Wie das alles genau aussieht, werde ich demnächst beschreiben. Heute geht es mehr um die Platzierung von Mutationstesten im Vergleich zu anderen Testverfahren, wie zum Beispiel Unit-Tests. Was Mutationstests nicht sind…read more

0

Karlsruher Entwicklertag 2017: Agile Day Bericht

Posted by in Konferenz

Zum zweiten Mal war ich auf dem Karlsruher Entwicklertag als Sprecher unterwegs. Diesmal am Agile Day, was zu Folge hatte, dass ich einige Themen mitnehmen konnte, die ich sonst nicht gehört hätte. Wie schon letztes Jahr war die Organisation seitens andrena objects professionell, auch schon im Vorfeld. Die Betreuung in meinem Track war ebenfalls sehr gut. Danke an die Moderatorin Sabine Ogoril und ihren Helfer. Keynote: 45 Minuten Disziplin – Rolf Dräther, Holger Koschek Die Keynote von Rolf Drähter und Holger Koschek war genau so wie sie sein sollte. Persönlich,…read more

0

Grundlagen: Was ist Endrekursion?

Posted by in clojure, funktionale Programmierung, funktionales Programmieren, JavaScript

Rekursion ist ein mächtiges Konzept in der Programmierung, bei dem eine Funktion sich selbst aufruft. In meiner Studienzeit gab es einen witzigen Spruch: Informatikerhandbuch – Rekursion: Siehe Rekursion Dieser beschreibt treffend die Idee, eine Aufgabe mit einer sich selbst aufrufenden Funktion zu lösen. Ein Beispiel Wir starten mit einem kleinen Beispiel, das man sofort findet, wenn man nach Rekursion sucht. Der Fibonacchi-Folge (JavaScript):

Leider gibt es mit dieser Implementierung ein Problem. Der Speicherverbrauch dieser Funktion wächst bei großen n stark an. Schuld ist, dass für jeden Aufruf von fib(n)…read more

0