Das Refactoring Coding Dojo

Foto des Autors
Andrej Thiele

Seit mittlerweile fast 2 Jahren findet regelmäßig das Conciso Coding Dojo Dortmund statt. Beim letzten Dojo haben wir zum ersten Mal eine Refactoring Kata durchgeführt, über dessen Verlauf ich hier kurz berichten möchte.

Seit mittlerweile fast 2 Jahren findet regelmäßig das Conciso Coding Dojo Dortmund statt. Ziel ist es, Programmierung in Form von Testgetriebener Entwicklung zu trainieren und außerhalb des normalen Projektgeschäfts anzuwenden. Zu diesem Zweck führen wir Übungen durch, sogenannte Code-Katas, in denen wir einfache Aufgaben mit den dazugehörigen Techniken bearbeiten. Auf diese Weise wird die notwendige Routine entwickelt,  dies auch im normalen Berufsalltag ohne größere Mühen zu tun.  Beim letzten Dojo haben wir zum ersten Mal eine Refactoring Kata durchgeführt, über dessen Verlauf ich hier kurz berichten möchte.

Die Aufgabe

Die Aufgabe war die klassische Tennis Refactoring Kata. Diese ist von Emily Bache in ihrem GitHub-Repository abrufbar und auch in ihrem Buch beschrieben. Da wir die Java-Variante verwenden wollten, habe ich diese in unser Firmen-Repository kopiert und auf JUnit 5 aktualisiert. Anschließend konnten wir uns der 1. Variante widmen.

Durchführung

An der Kata haben an diesem Abend 7 Entwickler teilgenommen, die alle im Raum Dortmund tätig sind. Die Entwicklung erfolgte mit Hilfe der IntelliJ Entwicklungsumgebung, welche die meisten Anwesenden in der täglichen Arbeit verwenden.

Refactoring CCDD Teilnehmer
Refactoring CCDD Teilnehmer

Wir sind damit gestartet, erst einmal eine gemeinsame Basis zu definieren. Dazu haben wir festgelegt, was eigentlich guten Code ausmacht und worauf wir achten wollen. Dabei haben wir folgende Aspekte definiert:

  • Guter Code sollte lesbar sein, auch ohne Kommentare
  • Es soll keinen nicht erreichbaren (Dead Code) oder auskommentierten Code geben
  • DRY-Prinzip
  • SOLID-Prinzip

Dies sind bei weitem zwar nicht alle Aspekte, die guten Code ausmachen, aber für die Session war es ausreichend.

Anschließend starteten wir die Kata in Form eines Mob-Programmings. Das bedeutete, dass ein Teilnehmer die Tastatur bedient hat und auf Anweisungen der anderen Änderungen am Quelltext durchgeführt. Ohne Anweisung durfte er aber nichts ändern.

Ein anderer Teilnehmer war Moderator und hat bei Unstimmigkeiten bestimmt, was zu tun ist. Ansonsten haben alle diskutiert und beschlossen, welche Änderungen durchzuführen sind . Diese Rollen wechselten regelmäßig alle 5 Minuten, so dass jeder mehrmals die jede Aufgabe innehatte. Ich war lediglich als Coach tätig und habe auf die Zeit und ggf. auf Einhaltung der zuvor beschlossenen Prinzipien geachtet, sowie an manchen Stellen kritische Fragen gestellt.

Fazit

Nach Ablauf von ca. 1 Stunden endete die Kata dann mit einer Retro. Folgende Ergebnisse haben wir für uns mitgenommen:

  • Die Refactoring Kata war spannend.
  • Die Gruppe und deren Wissen war für das Thema genau richtig.
  • Die Abwechslung zu den normalen TDD-Katas war gut.
  • Die Wechselzeit kann ggf. erhöht werden.

Der entstandene Code kann hier gefunden werden.

Anschließend haben wir das Thema der nächsten Kata festgelegt.  Dort bearbeiten wir wieder eine Aufgabe mit Hilfe von TDD, allerdings diesmal mit ein paar zusätzlichen Randbedingungen. Mehr dazu hier: https://www.meetup.com/CCDD-Conciso-Coding-Dojo-Dortmund/events/259842665/

Zusätzlich haben wir beschlossen, eine weitere Refactoring Kata durchzuführen, dessen Termin ebenfalls feststeht: https://www.meetup.com/CCDD-Conciso-Coding-Dojo-Dortmund/events/259842683/

Ich bedanke mich noch einmal herzlich bei allen Teilnehmern und hoffe, alle beim nächsten Mal wieder zu sehen. Neue Teilnehmer sind selbstverständlich auch immer gerne willkommen.

Schreibe einen Kommentar

Das könnte Dich auch noch interessieren

Durchstarten mit Keycloak und Docker

Durchstarten mit Keycloak und Docker

In diesem Beitrag erfahren Sie, wie Sie Keycloak mithilfe von Docker ausführen und konfigurieren können. Wir erläutern die Bedeutung von ...
Continuous Deployment einer Ionic-App mit Jenkins (Android)

Continuous Deployment einer Ionic-App mit Jenkins (Android)

Im zweiten Teil der Serie zum Thema Continuous Deployment einer Ionic-App mit Jenkins gehe ich näher auf das Deployment der ...
Beitragsbild für den Wissensbeitrag Angular Libraries mit Nx - So veröffentlichst Du Deine Komponente

Angular Libraries mit Nx – So veröffentlichst Du Deine Komponente...

npm ist vermutlich das bekannteste Portal für Abhängigkeiten und Bibliotheken für JavaScript/TypeScript und Node.js Applikationen. Die hier veröffentlichten Pakete können ...