Direkt zum Inhalt
Bild
Blogging%20Tips%20LinkedIn%20Post%20Header.jpg

Code Refactoring 101

AI-Translated
article publisher

Akanksha Mehta

Artikel

Code-Refactoring ist der Prozess der systematischen Verbesserung der Qualität des bestehenden Codes einer Anwendung, indem man ihn von Zeit zu Zeit überarbeitet, ohne seine Funktionalität in Echtzeit zu beeinträchtigen, d. h. es wird keine Änderung des externen Verhaltens des Codes bewirkt. Beim Refactoring kann der Code umstrukturiert und verändert werden, um den aktuellen Anforderungen gerecht zu werden und die neuesten Aktualisierungen in die Software zu integrieren. Darüber hinaus wird Refactoring auch durchgeführt, um die Erweiterbarkeit und Lesbarkeit der Software zu verbessern.

So sieht der Gesamtzyklus des Refactorings von Code aus der Sicht eines Entwicklers aus.
 

blassgelber Hintergrund mit einem Kreisdiagramm, das die verschiedenen Schritte des Refactorings zeigt


Wann sollte man Refactoring in Betracht ziehen?


Wenn der Code "riecht"

Wenn der Code "riecht", müssen Sie ihn refaktorieren. Der Begriff "Code Smells" wurde von dem Schöpfer von Extreme Programming (XP), Kent Beck, geprägt, als er in den späten 1990er Jahren Software entwickelte. Nachdem dieser Begriff anerkannt und in dem Buch Refactoring von Martin Fowler, einem renommierten Softwarewissenschaftler, vorgestellt wurde, wurde es üblich, einen Code als "riechend" zu bezeichnen.

Er umfasst Code, der gegen die Grundlagen der Softwareentwicklung verstößt, was wiederum die Qualität des Codes mindert. Der "riechende" Code muss keine Bugs oder Fehler enthalten und würde trotzdem eine Ausgabe liefern, aber er könnte die Verarbeitung verlangsamen und das Risiko von Ausfällen und Fehlern erhöhen. Daher machen Code Smells das Programm anfällig für Probleme. Wie der Name schon sagt, sind sie aber auch leicht zu erkennen, und das Refactoring von Code Smells ist relativ einfach.

Dramatische Technologiesprünge

Eine Technologie, die Ihnen im Moment vielversprechend erscheint, kann plötzlich veraltet sein. Das ist in der Vergangenheit schon vorgekommen und wird sich immer wiederholen, wenn neue Technologieanbieter auf den Markt kommen. Da Software sehr empfindlich auf die sich ständig weiterentwickelnde Technologiesphäre reagiert, ist es wichtig, routinemäßige Reengineering-Prüfungen durchzuführen, damit ein Unternehmen relevant bleibt.

Man sollte auch daran denken, regelmäßige Überprüfungen durchzuführen, unabhängig davon, wo man sich gerade in der Projektzeitleiste befindet. Die Pipeline des Projekts sollte auch Code-Reviews als Aufgabe beinhalten. Fehlerbehebungen können auch durch Refactoring von altem, veraltetem Code behoben werden. Erfahren Sie mehr, indem Sie die Bedeutung von Code-Reviews, wie man gesunde Code-Review-Ansätze integriert und warum die Zusammenarbeit zwischen Designern und Entwicklern während der Code-Review wichtig ist, lesen.

Vor dem Hinzufügen neuer Updates

Einer der besten Zeitpunkte, um über das Refactoring Ihres bestehenden Codes nachzudenken, ist wohl, bevor Sie neue Updates oder Funktionen hinzufügen. Es ist nur sinnvoll, den aktuellen Code zu überarbeiten und zu bereinigen, um die Qualität des Produkts zu verbessern und es den Entwicklern zu erleichtern, auf dem ursprünglichen Code aufzubauen und ihn zu erweitern. Erfahren Sie hier mehr über die Kunst des sauberen Codes.

In den Pausen

Ein weiterer geeigneter Zeitpunkt für das Refactoring ist direkt nach der Auslieferung des Produkts an den Markt. Warum, fragen Sie? Weil es eine gewisse Pause gibt, nachdem ein Projekt abgeschlossen und ein anderes begonnen wurde, und das Entwicklerteam wahrscheinlich etwas Zeit zur Verfügung hat. Daher ist dies der perfekte Zeitpunkt, um ein wenig Hausputz zu betreiben und den Code zu aktualisieren.

Wenn es keinen Support mehr gibt

Ein weiterer plausibler Grund für das Refactoring Ihres bestehenden Codes ist, wenn der Hersteller den Support für einige bestehende Komponenten eingestellt hat oder wenn die darauf aufbauenden Softwaresysteme aufgrund fehlender Sicherheitsupdates keine Möglichkeit zur Verbesserung mehr haben. Die Integration von Legacy-Softwaresystemen über moderne APIs (Application Programming Interface) ist eine echte Herausforderung, ebenso wie die Suche nach Experten, die in der Lage sind, diese Systeme effizient zu warten. 

  • Darüber hinaus ist die Wartung veralteter Systeme mit einem hohen finanziellen, zeitlichen und energetischen Aufwand verbunden und daher überhaupt nicht kosteneffizient.
  • Abgesehen davon bietet Code-Refactoring auch eine Fülle von Vorteilen.
  • Regelmäßiges Refactoring hält den Code sauber und frei von Fehlern oder Problemen.
  • Sauberer Code, der in ein effizientes Produkt umgewandelt wird, verbessert dadurch seine Leistung um ein Vielfaches. 
  • Sie sparen eine Menge Zeit und Geld, die sonst für die Wartung eines veralteten Systems aufgewendet würden.
  • Indem Sie regelmäßig mit der aktuellen Technologie Schritt halten, halten Sie Ihre technischen Schulden gering. Daher sammeln sich im Laufe der Zeit keine neueren Technologien in Ihrem System an, und die Entwickler, die an Ihrem Code arbeiten, müssen nicht von Anfang an das Chaos entwirren.
  • Wenn Sie anfangen, neue Tools und Methoden zu verwenden, gibt es genügend Informationen und Unterstützung auf dem aktuellen Markt, die Ihnen helfen können. Dies ist bei älterem, veraltetem Code nicht der Fall, und er wird mit der Zeit immer komplexer.

Dinge, die man beim Refactoring beachten sollte 

  • Wenn Code häufig refaktorisiert wird, wird er zu einem Segment der agilen Softwareentwicklung. Er benötigt ständige Wartung und Iterationen, um ihn sauber, einfach und übersichtlich zu machen.
  • Verwechseln Sie Refactoring nicht mit etwas, das dem Produkt neue Funktionen hinzufügt. Während des Refactorings sollten keine neuen Funktionen erstellt werden, denn darum geht es nicht. Der Zweck ist es, Ihren Code sauber, ordentlich und organisiert zu halten. Wenn Sie nicht über das nötige Fachwissen verfügen, um Ihr bestehendes Produkt zu verbessern, können Sie auch Outsourcing in Betracht ziehen.
  • Da Refactoring ein fortlaufender Prozess ist, sollten Sie daran denken, es als eine schrittweise Verbesserung des Codes zu betrachten und nicht versuchen, alles auf einmal zu beheben. Es ist nicht möglich, den gesamten Code zu refaktorieren, ohne ihn in überschaubare Teile zu zerlegen.
  • Wenn Sie mit dem mühsamen Refactoring-Prozess fertig sind, würden Sie es hassen, wenn die Änderungen, die Sie vorgenommen haben, zu neuen Fehlern führen. Leider kommt das öfter vor, als man denkt. Um ein solches Szenario zu vermeiden, sollten Sie sich für eine Testgetriebene Entwicklung entscheiden und während des gesamten Prozesses regelmäßige Kontrollen durchführen.
  • Automatisiertes Refactoring ist auch eine Option, die Sie wählen können. Eine Reihe von IDEs (Integrated Development Environments) bieten heutzutage eine integrierte automatisierte Refactoring-Unterstützung.

Beliebte Refactoring-Techniken


Red Green Refactoring

Die beliebteste und am weitesten verbreitete Technik für Code-Refactoring ist der Red-Green-Prozess. Hier wird der "Test First"-Ansatz verwendet, um die Grundlage für das Refactoring zu legen.

Schritt 1 : Schreiben Sie den fehlerhaften "Red Test". Die Entwickler müssen hier innehalten und prüfen, was genau das Problem ist und welcher Bereich entwickelt werden muss.

Schritt 2 : Schreiben Sie den einfachsten Code, der den ursprünglichen Code korrigiert, nur um das Programm von einem roten Test zu einem grünen zu bringen.

Schritt 3 : Schließlich wird der Code verbessert und erweitert, wobei der Test immer grün bleibt.
 

gelber Hintergrund mit drei Kreisen mit der Aufschrift 'rot' 'grün' und 'refactor', die den Prozess des rot-grünen Refactorings darstellen


Die Bedeutung dieser getrennten Schritte liegt darin, dass sich keiner dieser Prozesse vermischen sollte. Man sollte nicht versuchen, den Code zu verbessern, bevor er korrigiert wurde, oder versuchen, den Code gleichzeitig zu korrigieren und zu verbessern. 

Composing

In Fällen, in denen der Code aufgrund der langen Methoden, die im Programm geschrieben wurden, extrem schwer zu verstehen und zu ändern ist, wird die Composing-Methode verwendet. Zuerst werden Methoden wie "Variable extrahieren", "Inline Temp" usw. verwendet, um die Duplizierung im Code zu reduzieren. Zum Beispiel wird bei der Methode zur Extraktion von Bereitstellungen der Code in kleinere Teile zerlegt, um Probleme zu finden, und es werden separate Methoden verwendet, um die kleineren Code-Teile zu korrigieren. 

Simplifying

Simplifying kann auf zwei Arten angegangen werden

Simplify Conditional Expressions Refactoring wird verwendet, um die Komplexität des Codes zu reduzieren und seine Logik zu vereinfachen, um das gesamte Problem zu verstehen, um mit dem Refactoring-Prozess fortzufahren. 

Beim Simplify Method Calls Refactoring zielt man darauf ab, die Methodenaufrufe einfacher und leichter verständlich für die Entwickler zu gestalten und die Interaktion zwischen den Klassen zu bearbeiten und die Schnittstellen für sie zu vereinfachen.

Abstraction

Die Abstraktionsmethode wird bevorzugt, wenn eine große Menge an Refactoring durchgeführt werden muss. Diese Technik reduziert die Redundanz im bestehenden Code. Abstraktion ist verbunden mit dem Verschieben von Funktionalitäten entlang der Klassenhierarchie, dem Erstellen neuer Klassen und Schnittstellen und dem Ersetzen der Vererbung durch Delegation und umgekehrt.

Innerhalb der Technik der Abstraktion zieht die Pull-Up-Methode den Code in eine Superklasse und eliminiert dann die Codeduplizierung, während bei der Push-Down-Methode der Code aus einer Superklasse genommen und in eine Subklasse verschoben wird - und dann bearbeitet wird.

Grundsätzlich wird bei der Methode der Abstraktion eine Abstraktionsschicht für die Teile des Systems erstellt, die refaktorisiert werden müssen, und gleichzeitig wird ein Gegenstück erstellt, das schließlich die Schicht ersetzen wird.
 

gelber Hintergrund mit weißen Rechtecken, die den Prozess der Abstraktion beim Refactoring erklären


Moving Features

Bei dieser Technik werden neue Klassen erstellt und die Funktionalitäten sicher zwischen den alten und den neuen Klassen verschoben. Wenn festgestellt wird, dass die Klasse zu viele Verantwortlichkeiten hat oder wenn eine Klasse unnötig ist und keinen Mehrwert für Ihre Anwendung darstellt, kann der Code aus dieser Klasse in eine andere Klasse verschoben und die vorherige Klasse ganz gelöscht werden. Dies reduziert die Gesamtmasse des Programms und erhöht somit seine Effizienz.

User Interface Refactoring

Es werden einfache Änderungen in der Benutzeroberfläche vorgenommen, um den Code zu refaktorieren. Elemente wie "Eingabefeld ausrichten", "gemeinsame Schaltflächengröße anwenden", "Farbkontrast erhöhen" usw. werden beim User Interface Refactoring verwendet. 

Fazit

Wie jede andere Technologie wird auch Code mit jedem Tag ersetzt und verbessert, und es wäre unklug, die aktuellen Parameter zu ignorieren und an etwas Altem und Veraltetem festzuhalten. Daher wird empfohlen, den Code von Zeit zu Zeit zu refaktorieren, um mit der aktuellen Angebots- und Nachfragekette auf dem Laufenden zu bleiben.

Abonnieren

Ready to start your digital transformation journey with us?

Verwandte Blogs

Erkunden von Drupal Single Directory Components: Ein Wendepunkt für Entwickler

Single Directory Component

Webentwicklung lebt von Effizienz und Organisation, und Drupal, unser Lieblings-CMS, ist mit seiner neuesten Funktion hier,…

7 schnelle Schritte zur Erstellung von API-Dokumentationen mit Postman

How To Create API Documentation using Postman.png

Wenn Sie mit APIs arbeiten, kennen Sie wahrscheinlich bereits Postman, den beliebten REST Client, dem unzählige Entwickler…

Was ist der Product Engineering Life Cycle?

What%20is%20Product%20Engineering%20Life%20Cycle.png

Stellen Sie sich vor, Sie bauen ein Haus ohne Bauplan oder Konstruktionszeichnungen. Es wäre schwierig, die Kosten und den…