Refactoring
bedeutet, die Struktur von Software zu verbessern, ohne dabei das nach außen wahrnehmbare Verhalten zu ändern. Jeder einzelne Refactoring-Schritt, beispielsweise das Einführen einer neuen Methode oder das Umbenennen einer Variable, ist klein und daher risikoarm umsetzbar. Der positive Effekt auf das Design und die Lesbarkeit von Software nach einer Reihe von Refactoring-Schritten ist aber signifikant.
Ein Refactoring-Schritt wird durch einen so genannten Code Smell motiviert. Dies sind Anzeichen, die auf eine mögliche Veränderung beziehungsweise Verbesserung im Code hindeuten. Oft ist es auch eine Häufung solcher Anzeichen oder Smells, die zu einem Refactoring motivieren. Ein Code Smell muss nicht unmittelbar ein Problem oder gar einen Fehler bedeuten, ist aber in Indikator dafür, dass der Code verändert werden sollte.
Die methodische Vorgehensweise hat Martin Fowler in seinem Buch "Refactoring: Improving the Design of Existing Code" sehr gut beschrieben. Eine kurze Übersicht über die verschiedenen Refactoring-Patterns findet sich auch auf der Website zum Buch .
Gute IDEs unterstützen automatische Refactorings. Das spart Zeit und hilft, Fehler zu vermeiden. Darüber hinaus gibt es Entwicklungswerkzeuge , die automatisierte Refactorings bieten, beispielweise Rector .
Refactoring ist ein integraler Bestandteil des Red/Green/Refactor-Zyklus im Test-Driven Development .