Definition „Refaktorisierung“ Was ist Code Refactoring?

Autor / Redakteur: Gedeon Rauch / Stephan Augsten

Eine Software wird auf bestimmte Ziele und Anforderungen hin geschrieben. Code Refactoring berücksichtigt, dass sich dies während der Betriebszeit einer Software auch ändern kann und soll gewährleisten, dass Software sich kontinuierlich verbessert.

Firmen zum Thema

Beim Code Refactoring wird der Quellcode bereinigt, ergänzt und mitunter auch weiter kommentiert, um ihn qualitativ aufzuwerten.
Beim Code Refactoring wird der Quellcode bereinigt, ergänzt und mitunter auch weiter kommentiert, um ihn qualitativ aufzuwerten.
(Bild: luis-gomes-166706 / Pexels )

Bereits während des Prozesses der Softwarekonzipierung, spätestens aber während des Codings, müssen Programmierer und Programmiererinnen beachten, welche Ziele eine Software erfüllen soll und welchen Anforderungen diese gewachsen sein muss. Je länger eine Software auf dem Markt ist, desto häufiger werden sich Ziele und Anforderungen aber ändern.

Ob durch die Gewohnheiten der User, neue Funktionen oder aber externe Veränderungen in der Architektur von Hardware oder Betriebssystemen, Software dann noch lauffähig und funktional zu halten, erfordert Updates und Eingriffe in den Code. Mit jeder Änderung sollte gleichzeitig ein Refactoring stattfinden, mit dem sich der Code beständig verbessern lääst, indem die interne Struktur optimiert wird.

Wie Code Refactoring das Programmieren verbessert und vereinfacht

Um Code Refactoring zu begreifen, sollte zunächst der Begriff Code Smells erklärt werden. Code Smells sind Stellen im Code, die unsauber programmiert wurden (beispielsweise aus Zeitdruck), die notdürftig ausgebessert wurden und die als Schwachstellen im Code gelten.

In vielen praktischen Kontexten sind solche Code Smells unvermeidbar, da Budget und Zeitdruck es unmöglich machen, den Code so sauber wie möglich zu schreiben. Mit der Zeit können solche Altlasten sich allerdings stauen und werden sie weiterhin ignoriert und nicht ausgebessert, so geht dies irgendwann auch zu Lasten der Funktionalität der Software.

Code Refactoring erlaubt es Developern, den Code im Kern zu erhalten und die angedachte Funktionalität zu beizubehalten. Allerdings wird der Code umformatiert, extrahiert oder eingekapselt und dadurch optimiert. Schwachstellen, die mit neuen Codezeilen zu unvorhersehbaren Problemen führen könnten, werden ausgemerzt, ehe sie zu Problemen werden.

Anders als die komplette Neuentwicklung ist Code Refactoring ein vergleichsweise günstiger Prozess, der bei iterativ oder inkrementell entwickelter Software unerlässlich ist. Auch in der agilen Softwareentwicklung spielt das Code Refactoring bei jedem neuen Update eine entscheidende Rolle, um neue Funktionen auf einem sicheren und sicher optimierten Fundament zu errichten.

Warum Code Refactoring in der Praxis notwendig ist

Unnötig komplexe Befehle und funktional überflüssiger Code können ein Programm nachhaltig erodieren und zu Problemen führen. Teile überflüssigen, defekten oder unelegant geschriebenen Codes sind dabei kein Qualitätsurteil über die Fähigkeiten der Entwicklerinnen und Entwickler, sondern oftmals zeitlichen Gegebenheiten, mangelnder Kommunikation oder der Übernahme von Code-Teilen anderer Developer geschuldet.

Je größer Teams und je komplexer Projekte werden, desto häufiger kommt es zu Code Smells oder Code Rot – während die Smells oft nur milde Auswirkungen haben, kann ein fortgeschrittener Code Rot die Funktionalität einer Software drastisch einschränken. Auch wenn Code Refactoring in vielen Fällen nicht im Entwicklungsbudget vorgesehen ist und als unnötiger Arbeitsschritt betrachtet wird, ist es die wirtschaftlichere Alternative im Vergleich zur kompletten Code Review.

Code Refactoring ist als durchgehender Prozess zu verstehen, der während der Entwicklung, während des Updatens und Erstellens neuer Versionen stattfindet. Refactoring löst durch das Umstrukturieren Probleme im Code auf, statt diesen nur notdürftig zusammenzuhalten. Ohne Refactoring wird früher oder später eine komplette Code Review nötig, die dann eine lange Analyse und komplexes Umstrukturieren erfordert.

Die Ziele vom Code Refactoring

Code wird durch das Refactoring verbessert und in eine optimierte Formatierung gebracht. Ist der Code so effizient und elegant wie möglich geschrieben, ist es für Developer leichter, neue Elemente zu integrieren und den Code zu lesen und zu debuggen. Sowohl für interne Wartung und externe Analysierbarkeit wird der Code nun zugänglicher und kann dadurch in Zukunft noch leichter verbessert werden.

Um dies auch wirklich zu gewährleisten und den Code nicht noch verworrener zu gestalten, arbeitet Code Refactoring in der Praxis in inkrementellen Schritten und testet einzelne Code-Änderungen so kleinteilig wie möglich. Automatisierte Testdurchläufe von Entwicklungsprozessen wie Continuous Integration oder Test Driven Development eignen sich hierfür besonders gut.

Beispiele für Methoden und Techniken

Rot-Grün-Entwicklung: Diese Technik kommt vor allem in der agilen Softwareentwicklung zum Einsatz und testet eine Software vor und nach der Integration einer Funktion. Rot beschreibt Testläufe vor der Implementierung, grün Testläufe mit dem einfachsten Code-Abschnitt für das Bestehen des Testes.

In konstanten Testdurchläufen können nun fehlerhafte Codes aussortiert werden.

Branching by Abstraction: Diese Technik ist vor allem bei größeren Änderungen äußerst nützlich, da hier alte und bereits implementierte Codestellen auf neue Abschnitte umgestellt werden. Vor allem, wenn Vererbung, Klassenhierarchie und Extrahierung betroffen sind, können neue Verknüpfungen so leichter erstellt werden, indem einfach neue und verbesserte Funktionen verknüpft werden. Steht diese neue Verknüpfung erst einmal, kann die alte Funktion ohne Auswirkungen gelöscht werden.

Datenorganisation: Durch die Einteilung der Daten in Klassen können unnötige Verknüpfungen zwischen Klassen verhindert werden. Stattdessen werden alle Datensätze in schlüssige Klassen unterteilt.

Bedingte Ausdrücke vereinfachen: Bedingte Expressions können im Code Refactoring bereinigt werden, indem Bedingungen zerlegt, Ausdrücke zusammengeführt und Wiederholungen vermieden werden.

Das Resultat ist ein schlankerer und einfacher zu überblickender Code.

Vor- und Nachteile von Code Refactoring

Code Refactoring ermöglicht Ihnen eine Umstrukturierung des Quellcodes, ohne die Funktionalität zu beeinträchtigen. Zudem wird die Effizienz verbessert, der Code entschlackt und die zukünftige Wartung vereinfacht. Problematisch kann Code Refactoring werden, wenn neue komplexe Arbeitsschritte hinzu kommen, die neue Fehler nach sich ziehen können. Aus Kundenperspektive ist die Notwendigkeit des Code Refactoring zudem oft nicht ersichtlich, da ein erfolgreiches Refactoring für die Kundschaft häufig unsichtbar bleibt.

(ID:47558503)