Kurz erklärt
Beim Refactoring wird die innere Struktur von Code verbessert, ohne sein äußeres Verhalten zu ändern – mit dem Ziel, ihn lesbarer, einfacher und wartbarer zu machen.
Genauer
Refactoring ist kein Fehlerbehebungs- und kein Funktionsschritt: Danach muss das Programm exakt dasselbe tun wie vorher. Deshalb braucht man vorher Tests (Unit-Tests), die das beweisen. Kleine Schritte, nach jedem Schritt Tests laufen lassen, häufig committen.