[{"data":1,"prerenderedAt":155},["ShallowReactive",2],{"\u002Fleitfaden\u002Flegacy-code-refactoring":3},{"id":4,"title":5,"body":6,"date":144,"description":145,"extension":146,"keyword":147,"meta":148,"navigation":149,"path":150,"seo":151,"sitemap":152,"stem":153,"__hash__":154},"leitfaden\u002Fleitfaden\u002Flegacy-code-refactoring.md","Legacy Code Refactoring: Mit der Mikado-Methode sicher umbauen",{"type":7,"value":8,"toc":133},"minimark",[9,13,17,22,30,34,37,41,44,48,51,80,89,93,96,100,108,112,118,124],[10,11,5],"h1",{"id":12},"legacy-code-refactoring-mit-der-mikado-methode-sicher-umbauen",[14,15,16],"p",{},"Michael Feathers hat in seinem Klassiker \"Working Effectively with Legacy Code\" eine Definition geprägt, die bis heute die treffendste ist: Legacy Code ist Code ohne Tests. Nicht Alter, nicht die verwendete Programmiersprache macht ein System zu Legacy – sondern die fehlende Sicherheit, eine Änderung vorzunehmen, ohne etwas kaputt zu machen. Genau deshalb scheitert \"einfach mal aufräumen\" so zuverlässig: Ohne Sicherheitsnetz ist jedes Refactoring ein Blindflug.",[18,19,21],"h2",{"id":20},"warum-spontanes-refactoring-meistens-schiefgeht","Warum spontanes Refactoring meistens schiefgeht",[14,23,24,25,29],{},"Das \"Kaninchenbau-Syndrom\" kennt jede:r, die schon mal in einem Legacy-System gearbeitet hat: Eine kleine Änderung – eine Bibliothek aktualisieren, eine Klasse extrahieren – zieht einen Fehler nach sich. Der Fix erzeugt drei neue Fehler. Nach vier Stunden sind 50 Dateien geändert, das Projekt kompiliert nicht mehr, und am Ende bleibt nur ",[26,27,28],"code",{},"git reset --hard",". Das Problem ist nicht mangelndes Können, sondern das Fehlen eines strukturierten Prozesses.",[18,31,33],{"id":32},"schritt-1-charakterisierungstests-vor-jedem-umbau","Schritt 1: Charakterisierungstests vor jedem Umbau",[14,35,36],{},"Bevor du etwas veränderst, brauchst du eine Definition von \"es funktioniert noch wie vorher\". Charakterisierungstests erfassen das tatsächliche Verhalten des bestehenden Codes – nicht das gewünschte, sondern das reale, inklusive aller Kuriositäten. Sie sind dein Sicherheitsnetz: Schlägt ein Test nach einer Änderung fehl, weißt du sofort, dass sich das Verhalten geändert hat, statt es erst in Produktion zu bemerken.",[18,38,40],{"id":39},"schritt-2-seams-finden-die-stellen-an-denen-sich-code-sicher-trennen-lässt","Schritt 2: Seams finden – die Stellen, an denen sich Code sicher trennen lässt",[14,42,43],{},"Feathers nennt sie \"Seams\": Stellen im Code, an denen du das Verhalten ändern kannst, ohne den Code an dieser Stelle direkt zu bearbeiten – etwa durch das Einziehen einer Schnittstelle vor eine harte Abhängigkeit. Seams sind der Hebelpunkt, um große, verklebte Klassen schrittweise entkoppelbar zu machen, ohne das ganze System auf einmal anzufassen.",[18,45,47],{"id":46},"schritt-3-die-mikado-methode-für-strukturierte-refactorings","Schritt 3: Die Mikado-Methode für strukturierte Refactorings",[14,49,50],{},"Für größere, tief verschachtelte Abhängigkeiten reicht \"einfach mal versuchen\" nicht aus. Die Mikado-Methode – benannt nach dem Geschicklichkeitsspiel – bietet dafür einen radikal einfachen Prozess:",[52,53,54,62,68,74],"ol",{},[55,56,57,61],"li",{},[58,59,60],"strong",{},"Ziel festlegen",", z. B. \"Zahlungsmodul von Anbieter A auf Anbieter B umstellen\".",[55,63,64,67],{},[58,65,66],{},"Naiv versuchen",", das Ziel direkt im Code umzusetzen.",[55,69,70,73],{},[58,71,72],{},"Bei Fehlern: sofort zurückrollen"," und die gefundene Abhängigkeit als neue Voraussetzung notieren (der \"Mikado-Graph\").",[55,75,76,79],{},[58,77,78],{},"Die kleinste ungelöste Abhängigkeit"," (\"das Blatt\") als neues Ziel wählen und den Prozess wiederholen – bis der Graph gelöst ist.",[14,81,82,83,88],{},"Der entscheidende Trick: Das System bleibt nach jedem einzelnen Schritt lauffähig, weil Fehlversuche konsequent zurückgerollt werden. Eine ausführliche Schritt-für-Schritt-Erklärung inklusive Beispiel findest du in meinem Blogartikel ",[84,85,87],"a",{"href":86},"\u002Fblog\u002Fmikado-methode-legacy-refactoring","\"Die Mikado-Methode\"",".",[18,90,92],{"id":91},"boy-scout-rule-refactoring-im-alltag-statt-als-großprojekt","Boy-Scout-Rule: Refactoring im Alltag statt als Großprojekt",[14,94,95],{},"Nicht jedes Refactoring braucht ein eigenes Projekt. Die einfache Regel \"hinterlasse den Code sauberer, als du ihn vorgefunden hast\" sorgt dafür, dass Verbesserung Teil der täglichen Arbeit wird, statt auf einen nie kommenden \"Refactoring-Sprint\" zu warten.",[18,97,99],{"id":98},"refactoring-vs-rewrite-wann-lohnt-sich-welcher-weg","Refactoring vs. Rewrite: Wann lohnt sich welcher Weg?",[14,101,102,103,107],{},"Refactoring verändert die interne Struktur, ohne das äußere Verhalten zu ändern – risikoarm, schrittweise, jederzeit stoppbar. Ein Rewrite ersetzt das System komplett neu – riskanter, aber manchmal unausweichlich, etwa wenn die zugrunde liegende Plattform komplett veraltet ist. Bevor du dich für einen kompletten Neubau entscheidest, lohnt sich ein Blick in meinen ",[84,104,106],{"href":105},"\u002Fleitfaden\u002Fbig-bang-rewrite-vermeiden","Leitfaden zum Vermeiden von Big-Bang-Rewrites"," – die meisten vermeintlichen \"muss neu gebaut werden\"-Situationen lassen sich mit Refactoring-Techniken günstiger und sicherer lösen.",[18,109,111],{"id":110},"fazit","Fazit",[14,113,114,115,117],{},"Legacy Code lässt sich sicher refactorieren – aber nicht durch Mut allein, sondern durch Struktur: erst Charakterisierungstests als Sicherheitsnetz, dann Seams zur Entkopplung, dann bei Bedarf die Mikado-Methode für komplexe Abhängigkeiten. Wer diesen Dreiklang beherrscht, muss nie wieder auf ",[26,116,28],{}," hoffen.",[14,119,120,123],{},[58,121,122],{},"Stecken du und dein Team in einem Legacy-Projekt fest?"," Im Code Health Audit erstelle ich gemeinsam mit deinem Team einen konkreten Mikado-Fahrplan für euer nächstes Refactoring.",[14,125,126,127],{},"👉 ",[84,128,132],{"href":129,"rel":130},"https:\u002F\u002Fapp.bookaslot.de\u002Fpublic\u002F4faazrcaixfp8w3\u002Flocations\u002Fiqacygtac8iy92q\u002Fservices\u002F82sfyiwg68wmk1q?employeeId=t0yolmqvytp4un8",[131],"nofollow","Jetzt kostenloses Erstgespräch buchen",{"title":134,"searchDepth":135,"depth":135,"links":136},"",2,[137,138,139,140,141,142,143],{"id":20,"depth":135,"text":21},{"id":32,"depth":135,"text":33},{"id":39,"depth":135,"text":40},{"id":46,"depth":135,"text":47},{"id":91,"depth":135,"text":92},{"id":98,"depth":135,"text":99},{"id":110,"depth":135,"text":111},"2026-07-15T00:00:00.000Z","Was Legacy Code eigentlich definiert, warum \"einfach mal aufräumen\" scheitert und wie du mit Charakterisierungstests und der Mikado-Methode sicher refactorierst.","md","Legacy Code Refactoring",{},true,"\u002Fleitfaden\u002Flegacy-code-refactoring",{"title":5,"description":145},{"loc":150},"leitfaden\u002Flegacy-code-refactoring","nfhn2g6S-jAtOIeLnjmYliFcISRWDqiiNLxx1avFhao",1784209002264]