Refactoring

Mit Refactoring bezeichnet man die Überarbeitung der Struktur einer Software, ohne dass sich deren Verhalten nach außen ändert. Häufig wird in diesem Zusammenhang auch der Begriff der Restrukturierung verwendet, innerhalb der objektorientierten Programmierung (OOP) spricht man jedoch eher von Refactoring. Ein sinnvoller Ansatz für das Refactoring ergibt sich mit Fertigstellung der Software in einem fehlerfreien Zustand. Die Ursache von Refactoring ist die Anpassung von benutzter Software an neue veränderte Anforderungen, was zur Degeneration bestehender Strukturen in einer Software führt.


Das Ziel von Refactoring ist es, den Programmcode überschaubarer und klarer zu strukturieren, um insbesondere die Aufwände für dessen Wartung und Pflege zu minimieren. Das Refactoring hat speziell beim Extreme Programming eine wesentliche Stellung. Durch moderne, integrierte Entwicklungsumgebungen wie die Eclipse IDE, Visual Studio oder Borland Delphi werden automatisierte Funktionen zum Refactoring bereitgestellt.

Mit der Technik des Refactorings können Modifizierungen am Programmcode vorgenommen werden, ohne dass dessen Funktion beeinträchtigt wird. Dies gilt für objektorientierte Software jedoch nicht für deren Ergänzungen wie die aspekt- oder subjektorientierte Programmierung. Durch das Refactoring wird also eine bestehende Software generell oder auch in Teilen lesbarer, in ihren Strukturen verständlicher, besser modifizierbar, besser testbar und es werden Redundanzen vermieden.

Typisch für Refactorings sind die folgenden Beispiele:

  • Umbenennen von Variablen und Methoden.
  • Einkapseln von Feldern.
  • Einführung einer neuen abstrakten Oberklasse.
  • Entfernen und Neuordnen von Parametern.
  • Umformatieren von Programmcode.
  • Extraktion von Methoden, Klassen, Paketen und Schnittstellen.
  • Verbesserung der Datenkapselung.
Sofern es sich um das Refactoring von Programmcode in Java handelt, so ist der u.g. Link auf die ursprünglich von Martin Fowler veröffentlichten Liste möglicher Refactorings eine interessante Hilfestellung. Sinngemäß können die dort gegebenen Hinweise auch auf andere objektorientierte Sprachen übertragen werden.

Refactoring und Extreme Programming

Gerade in Verbindung mit Extreme Programming kommt Refactoring eine wesentliche Rolle zu, da dort die Entwicklung in inkrementellen Schritten folgt. Die Vorgehensweise des Extreme Programming beinhaltet die ständige Änderung an bestehendem Programmcode und das Hinzufügen neuer Code-Schnipsel. Dort ist die ständige Restrukturierung - das Refactoring - des Programmcodes eine Voraussetzung für ein erfolgreiches Software-Projekt.

Hauptsächlich bei komplexeren Software-Projekten kann der Überblick über den Programmcode nur eingeschränkt möglich sein, so dass schon an für sich triviale Modifizierungen wie das Umbenennen einer Variablen oder einer Methode zu komplexeren Fehlersituationen führen können. Dort ist dann der Einsatz von modernen Software-Werkzeugen wie Eclipse, Visual Studio oder Borland Delphi sinnvoll, die eine Reihe von automatisierten Funktionen zum Refactoring - gesteuert durch komfortable Menüs - zur Verfügung stellen. Aber auch bei Einsatz eines solchen Werkzeugs gilt, dass Refactoring immer ein Prozess in vielen, kleineren Schritten ist, der in jedem Fall den einzelnen Schritten einen ausführlichen Test folgen lässt.

http://www.tutego.de/java/refactoring/catalog/

http://www.refactoring.com

Informationen zum Artikel
Deutsch: Refactoring
Englisch:
Veröffentlicht: 08.11.2013
Wörter: 477
Tags: #Design
Links: Anpassung, Datenkapselung, Delphi, Eclipse, IDE (integrated drive electronics)