Die Mikado-Methode ist eine Technik für große Refactorings in Legacy- oder komplexen Codebasen, beschrieben von Ola Ellnestam und Daniel Brolund in „The Mikado Method“ (2012). Man versucht das Ziel naiv umzusetzen, trägt alles, was dabei bricht, als Voraussetzung in einen Mikado-Graphen ein, kehrt zum letzten funktionierenden Zustand zurück und löst zuerst die Blattknoten. So bleibt der Code gesund, und jeder Commit ist eine zusammenhängende, funktionierende Änderung.
Mikado-Methode
Details
- Auch bekannt als
-
Mikado-Graph-Methode
Kernkonzepte:
- Mikado-Ziel
-
Der klare, angestrebte zukünftige Zustand des Codes nach dem Refactoring; die Wurzel des Abhängigkeitsgraphen und das Erfolgskriterium der Änderung
- Voraussetzungsermittlung
-
Blockierende Abhängigkeiten aufdecken, indem die Änderung versucht und notiert wird, was dabei bricht
- Experimente nutzen
-
Bevorzuge schnelle oder zeitlich begrenzte empirische Versuche gegenüber langen Vorab-Analysen
- Immer rückgängig machen
-
WICHTIG: Nach dem Entdecken einer Voraussetzung immer zum letzten bekannten funktionierenden Zustand zurückkehren, bevor diese angegangen wird
- Mikado-Graph
-
Ein gerichteter azyklischer Graph, bei dem Ziele und Voraussetzungen Knoten sind und Pfeile die Abhängigkeiten anzeigen
- Blatt-zuerst-Auflösung
-
Zuerst die Blattknoten (ohne weitere Voraussetzungen) auflösen und von dort zurück zum Wurzelziel arbeiten
- Kleine reversible Schritte
-
Mache fehlgeschlagene Experimente sofort rückgängig; behalte oder committe nur zusammenhängende, gesunde Änderungen
- Aussagekräftige Commits
-
Committe nur, wenn der Code kompiliert, Tests laufen, das Produkt in einem guten Zustand ist und die Änderung für sich genommen sinnvoll ist
- Schlüsselvertreter
-
Ola Ellnestam, Daniel Brolund ("The Mikado Method", 2012)
Wann zu verwenden:
-
Große Refactorings in Legacy- oder komplexen Codebasen angehen
-
Wenn eine direkte Änderung zu viele Dinge bricht, um sie auf einmal zu beheben
-
Koordination von Refactoring-Arbeiten mehrerer Entwickler auf sichere Weise
-
Inkrementelle Verbesserungen vornehmen, ohne das Team zu blockieren
-
Brownfield-Entwicklung mit versteckten Abhängigkeiten
Mikado-Methode-Rezept (kanonische Form)
-
Hier beginnen: Das Mikado-Ziel aufschreiben.
-
Das Ziel oder die Voraussetzung naiv implementieren.
-
Treten Fehler auf?
-
Beispiele: Compilerfehler, fehlschlagende Tests, Laufzeitfehler, kaputte Builds.
-
Wenn Ja, gehe zu Schritt 4.
-
Wenn Nein, gehe zu Schritt 9.
-
-
Unmittelbare Lösungen für die Fehler finden.
-
Die Lösungen als neue Voraussetzungen in den Mikado-Graphen einzeichnen.
-
Alle Änderungen rückgängig machen und zum letzten bekannten guten Zustand zurückkehren.
-
Die nächste zu bearbeitende Voraussetzung auswählen.
-
Gehe zu Schritt 2.
-
Ist die Änderung sinnvoll?
-
Beispiele: verständlich, intern konsistent, sicher beizubehalten, für sich allein nützlich.
-
Wenn Ja, gehe zu Schritt 10.
-
Wenn Nein, gehe zu Schritt 7.
-
-
Die Änderung committen.
-
Ist das Mikado-Ziel erreicht?
-
Wenn Ja, gehe zu Schritt 12.
-
Wenn Nein, gehe zu Schritt 7.
-
-
FERTIG!