Codewiederfactoring

Codewiederfactoring ist eine "disziplinierte Technik, für einen vorhandenen Körper des Codes umzustrukturieren, seine innere Struktur verändernd, ohne sein Außenverhalten zu ändern,", übernommen, um einige der nichtfunktionellen Attribute der Software zu verbessern.

Gewöhnlich wird das durch die Verwendung der Reihe von "refactorings" getan, von denen jeder eine (gewöhnlich) winzige Änderung in einem Computerprogramm-Quellcode ist, der seine funktionellen Voraussetzungen nicht modifiziert. Vorteile schließen verbesserte Codelesbarkeit und reduzierte Kompliziertheit ein, um die Haltbarkeit des Quellcodes, sowie eine ausdrucksvollere innere Architektur oder das Gegenstand-Modell zu verbessern, um Dehnbarkeit zu verbessern.

Übersicht

Wiederfactoring wird gewöhnlich dadurch motiviert, einen Codegeruch zu bemerken. Zum Beispiel kann die Methode in der Nähe sehr lang sein, oder es kann ein nahes Duplikat einer anderen nahe gelegenen Methode sein. Einmal anerkannt können solche Probleme durch das Wiederfactoring der Quellcode oder das Umwandeln davon in eine neue Form gerichtet werden, die sich dasselbe wie zuvor benimmt, aber das "riecht" nicht mehr. Für eine lange Routine, ziehen Sie ein oder mehr kleinere Unterprogramme heraus. Oder für Doppelroutinen, entfernen Sie die Verdoppelung und verwerten Sie geteilte Funktion von demjenigen in ihrem Platz. Misserfolg, Wiederfactoring durchzuführen, kann auf das Ansammeln der technischen Schuld hinauslaufen.

Es gibt zwei allgemeine Kategorien von Vorteilen für die Tätigkeit des Wiederfactorings.

  1. Haltbarkeit. Es ist leichter, Programmfehler zu bestechen, weil der Quellcode leicht ist zu lesen und die Absicht seines Autors leicht ist zu fassen. Das könnte durch das Reduzieren großer monolithischer Routinen in eine Reihe individuell kurzer, gut genannter Einzweckmethoden erreicht werden. Es könnte durch das Bewegen einer Methode zu einer passenderen Klasse, oder durch das Entfernen irreführender Anmerkungen erreicht werden.
  2. Dehnbarkeit. Es ist leichter, die Fähigkeiten zur Anwendung zu erweitern, wenn es erkennbare Designmuster verwendet, und es etwas Flexibilität zur Verfügung stellt, wo niemand vorher bestanden haben kann.

Vor dem Wiederfactoring eine Abteilung des Codes ist ein fester Satz von automatischen Einheitstests erforderlich. Die Tests sollten in ein paar Sekunden demonstrieren, dass das Verhalten des Moduls richtig ist. Der Prozess ist dann ein wiederholender Zyklus, eine kleine Programm-Transformation zu machen, es prüfend, um Genauigkeit zu sichern, und eine andere kleine Transformation machend. Wenn an einem Punkt ein Test scheitert, machen Sie Ihr letztes Kleingeld auf und versuchen vielleicht auf eine verschiedene Weise noch einmal. Durch viele kleine Schritte bewegt sich das Programm davon, wo es dazu war, wo Sie wollen, dass es ist. Befürworter der äußersten Programmierung und anderen flinken Methodiken beschreiben diese Tätigkeit als ein integraler Bestandteil des Softwareentwicklungszyklus.

Liste von Wiederfactoring-Techniken

Hier sind einige Beispiele des Codes refactorings; einige von diesen können nur für bestimmte Sprachen oder Sprachtypen gelten. Eine längere Liste kann im Wiederfactoring-Buch von Fowler und auf der Wiederfactoring-Website von Fowler gefunden werden.

  • Techniken, die mehr Abstraktion berücksichtigen
  • Fassen Sie Feld - Kraft-Code kurz zusammen, um auf das Feld mit dem Hauer und den Setter-Methoden zuzugreifen
  • Verallgemeinern Sie Typ - schaffen allgemeinere Typen, um zu berücksichtigen, dass mehr Code teilt
  • Ersetzen Sie Datentypprüfungscode durch den Staat/Strategie
  • Ersetzen Sie bedingt durch polymorphism
  • Techniken, um Code in logischere Stücke auseinander zu brechen
  • Extrakt-Methode, um einen Teil einer größeren Methode in eine neue Methode zu verwandeln. Durch das Brechen des Codes in kleineren Stücken ist es leichter verständlich. Das ist auch auf Funktionen anwendbar.
  • Extrakt-Klasse bewegt einen Teil des Codes von einer vorhandenen Klasse in eine neue Klasse.
  • Techniken, um Namen und Position des Codes zu verbessern
  • Bewegen Sie sich Methode- oder Bewegungsfeld - bewegen sich zu einer passenderen Klasse oder Quelldatei
  • Benennen Sie Methode um oder Benennen Sie Feld - das Ändern des Namens in einen neuen Um, der besser seinen Zweck offenbart
  • Fahren Sie - in OOP vor, bewegen Sie sich zu einer Superklasse
  • Stoßen Sie Unten - in OOP, bewegen Sie sich zu einer Unterklasse

Hardware-Wiederfactoring

Während der Begriff Wiederfactoring ursprünglich verwiesen exklusiv auf das Wiederfactoring des Softwarecodes, in den letzten Jahren geschrieben auf Hardware-Beschreibungssprachen (HDLs) codieren Sie, ist auch refactored gewesen. Das Begriff-Hardware-Wiederfactoring wird als ein Schnellschrift-Begriff für das Wiederfactoring des Codes auf Hardware-Beschreibungssprachen verwendet. Da, wie man betrachtet, HDLs Programmiersprachen durch die meisten Hardware-Ingenieure nicht sind, soll Hardware-Wiederfactoring als ein getrenntes Feld vom traditionellen Codewiederfactoring betrachtet werden.

Das automatisierte Wiederfactoring von analogen Hardware-Beschreibungen (in VHDL-AMS) ist von Zeng und Huss vorgeschlagen worden. In ihrer Annäherung bewahrt Wiederfactoring das vorgetäuschte Verhalten eines Hardware-Designs. Das nichtfunktionelle Maß, das sich verbessert, besteht darin, dass Refactored-Code durch Standardsynthese-Werkzeuge bearbeitet werden kann, während der ursprüngliche Code nicht kann.

Das Wiederfactoring von digitalem HDLs, obgleich manuelles Wiederfactoring, ist auch von Gefährten von Synopsys Mike Keating untersucht worden. Sein Ziel soll komplizierte Systeme leichter machen zu verstehen, der vergrößert

die Produktivität der Entwerfer.

Im Sommer 2008 gab es eine intensive Diskussion über das Wiederfactoring des VHDL-Codes auf dem news://comp.lang.vhdl newsgroup. Die Diskussion hat um ein spezifisches manuelles Wiederfactoring gekreist, das von einem Ingenieur und der Frage daran durchgeführt ist, ob automatisierte Werkzeuge für solches Wiederfactoring bestehen.

Bezüglich Endes 2009 bietet Sigasi automatisierte Werkzeug-Unterstützung für das VHDL Wiederfactoring an.

AMIQ DVT, ein IDE für das Hardware-Design und die Überprüfung, stellt Wiederfactoring-Fähigkeiten für e (Überprüfungssprache), SystemVerilog, Verilog und VHDL zur Verfügung.

Geschichte

Im vorigen Wiederfactoring wurde in Entwicklungsprozessen vermieden. Ein Beispiel davon ist, dass CVS (geschaffen 1984) nicht Version das Bewegen oder die Umbenennung von Dateien und Verzeichnissen tut.

Obwohl Wiederfactoring-Code informell seit Jahren, der 1991-Dr. von William Griswold getan worden ist Doktorarbeit ist eine der ersten akademischen Hauptarbeiten am Wiederfactoring funktionelle und verfahrensrechtliche Programme, die von der 1992-Doktorarbeit von William Opdyke auf dem Wiederfactoring von objektorientierten Programmen gefolgt sind, obwohl die ganze Theorie und Maschinerie lange als Programm-Transformationssysteme verfügbar gewesen sind. Alle diese Mittel stellen einen Katalog der üblichen Methodik für das Wiederfactoring zur Verfügung; eine Wiederfactoring-Methode hat eine Beschreibung dessen, wie man die Methode und Hinweise dafür anwendet, wenn Sie sollten (oder wenn nicht) die Methode anwenden.

Das Buch von Martin Fowler Wiederfactoring: Besserung des Designs des Vorhandenen Codes ist die kanonische Verweisung.

Der erste bekannte Gebrauch des Begriffes "Wiederfactoring" in der veröffentlichten Literatur war in einem Artikel im September 1990 von William F. Opdyke und Ralph E. Johnson.

Die Doktorarbeit von Griswold,

Die Doktorarbeit von Opdyke, veröffentlicht 1992, hat auch diesen Begriff gebraucht.

Der Begriff "Factoring" ist in Hervor Gemeinschaft seitdem mindestens der Anfang der 1980er Jahre gebraucht worden. Kapitel Sechs des Buches von Leo Brodie, das Hervor (1984) Denkt, wird dem Thema gewidmet.

In der äußersten Programmierung hat die Extrakt-Methode-Wiederfactoring-Technik im Wesentlichen dieselbe Bedeutung wie Factoring in Hervor; ein "Wort" (oder Funktion) in den kleineren, leichter aufrechterhaltene Funktionen zu brechen.

Refactorings kann auch posthoc wieder aufgebaut werden, um kurze Beschreibungen des Komplexes zu erzeugen

Softwareänderungen, die in Softwarebehältnissen wie CVS oder SVN registriert sind.

Automatisiertes Codewiederfactoring

Viele Softwareredakteure und IDEN haben Wiederfactoring-Unterstützung automatisiert. Hier ist eine Liste von einigen dieser Redakteure oder so genannte Wiederfactoring-Browser.

  • IDEE von IntelliJ (für Java)
  • Java Development Toolkit (JDT) der Eklipse
  • NetBeans (für Java)
  • und RefactoringNG, ein Modul von Netbeans für das Wiederfactoring, wo Sie Transformationsregeln des abstrakten Syntax-Baums des Programms schreiben können.
  • JDeveloper (für Java)
  • Embarcadero Delphi
  • Sehstudio (für.NET)
  • Telerik JustCode (addon für das Sehstudio)
  • ReSharper (addon für das Sehstudio)
  • Coderush (addon für das Sehstudio)
  • Visuell Helfen (addon für das Sehstudio mit der Wiederfactoring-Unterstützung für VB, VB.NET. C# und C ++)
  • DMS Softwareneugestaltungswerkzeug (Werkzeuge groß angelegtes Wiederfactoring für C, C ++, C#, COBOL, Java, PHP und andere Sprachen)
  • Photran (Fortran, der für die Eklipse IDE Steck-ist)
  • Zusatzfunktion von SharpSort für das Sehstudio 2008
  • Sigasi HDT (für VHDL)
  • Xcode
  • Plausch-Wiederfactoring-Browser (für den Plausch)
  • Simplifide (für Verilog, VHDL und SystemVerilog)
  • Sauberer (für Erlang)
  • AMIQ DVT (für e, SystemVerilog, Verilog und VHDL)

Siehe auch

  • Coderezension
  • Datenbankwiederfactoring
  • Designmuster (Informatik)
  • Verfinsterter Code
  • Softwaregleicher prüft nach
  • Vorfactoring
  • Schreiben Sie (Programmierung) um
  • Trennung von Sorgen
  • Probegefahrene Entwicklung
  • Modulprogrammierung
  • Umgestaltung (Software)

Weiterführende Literatur

Links


Richard Dawkins / Verwandtschaftsdatenbank
Impressum & Datenschutz