Refactoring, zu deutsch Umstrukturierung, ist ein Begriff aus der agilen Softwareentwicklung und beschreibt die Bearbeitung eines Programmcodes. Ziel des Refactoring ist die bessere Lesbarkeit, Übersichtlichkeit und Erweiterbarkeit von Quelltexten.
Wenn Sie schon einmal einen Blick in einen Quellcode geworfen haben, werden Sie verstehen, dass so ein Programm schnell unübersichtlich werden kann. Selbst erfahrene Programmierer benötigen Zeit, um sich bei tausenden Zeilen Quellcode einen Überblick zu verschaffen.
Sie können sich so einen Quelltext vorstellen wie eine große Fabrikhalle, in der etwas produziert wird. Das Endprodukt ist in unserem Fall dann zum Beispiel eine Website oder ein Computerprogramm. In der Fabrikhalle gibt es verschieden Maschinen (im Quellcode spricht man von Funktionen), die jeweils eine bestimmte Aufgabe haben. Umso komplexer das Endprodukt, umso mehr Maschinen gibt es und umso unübersichtlicher wird die Fabrikhalle. Ziel ist es also, die Fabrikhalle so aufzubauen, dass jemand, der sie zum ersten Mal betritt, sich schnell einen Überblick verschaffen kann. Das kann man zum Beispiel tun, indem man den Maschinen eindeutige Namen gibt und eine Dokumentation darüber pflegt, welche Aufgaben die einzelnen Maschinen haben. (Ja, auch in der Programmierung haben Funktionen Namen und werden im Idealfall dokumentiert.)
Stellen Sie sich nun vor, Sie wollen die Fabrikhalle erweitern. Sie stellen Kleidung her. Bisher gibt es Maschinen, die die Stoffe zuschneiden, nähen und verpacken. Nun sollen die Pullover zusätzlich einen Aufdruck erhalten. Sie haben dafür mehrere Möglichkeiten: Sie könnten die Pullover-Näh-Maschine so erweitern, dass Sie zusätzlich Aufdrucke anfertigt. Sie könnten aber auch eine komplett neue Maschine nur für Aufdrucke aufstellen. Das hat den Vorteil, dass Sie auch Pullover ohne Aufdruck herstellen, andere Kleidungsstücke bedrucken und Fehler schneller beheben können.
Nach dem gleich Prinzip ist ein gut strukturierter Quellcode mit seinen Funktionen aufgebaut.
Refactoring kann also einige Zeit in Anspruch nehmen (gerade bei sehr unstruktierten Fabrikhallen), spart diese auf lange Sicht aber wieder ein. Nämlich dann, wenn neue Programmierer sich in kurzer Zeit im Quellcode zurechtfinden, Bugs schneller beheben und problemlos neue Funktionen implementieren können.
