Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Ruby Refactoring Plug-In für Eclipse Präsentation Diplomarbeit Team:Lukas Felber Thomas Corbat Mirko Stocker Betreuung:Prof. Peter Sommerlad Experte:Dr.

Ähnliche Präsentationen


Präsentation zum Thema: "Ruby Refactoring Plug-In für Eclipse Präsentation Diplomarbeit Team:Lukas Felber Thomas Corbat Mirko Stocker Betreuung:Prof. Peter Sommerlad Experte:Dr."—  Präsentation transkript:

1 Ruby Refactoring Plug-In für Eclipse Präsentation Diplomarbeit Team:Lukas Felber Thomas Corbat Mirko Stocker Betreuung:Prof. Peter Sommerlad Experte:Dr. Dirk Bäumer

2 Page 2 Lukas Felber, Mirko Stocker, Thomas Corbat Übersicht Einführung Studienarbeit Refactorings Pro Refactoring: Demo Erläuterungen Testen Fragen

3 Page 3 Lukas Felber, Mirko Stocker, Thomas Corbat Einführung - RDT Ruby Development Tools IDE basierend auf Eclipse Grundlage von RadRails Features wie: –TestUnit Runner –Debugging –Code Completion

4 Page 4 Lukas Felber, Mirko Stocker, Thomas Corbat Einführung - JRuby Ruby Implementierung in Java Stellt einen AST zur Verfügung –ohne Kommentare –optimiert für Interpretation

5 Page 5 Lukas Felber, Mirko Stocker, Thomas Corbat Studienarbeit Comment Handling Positions-Fehler AST-Rewriter Basis für Refactorings

6 Page 6 Lukas Felber, Mirko Stocker, Thomas Corbat Refactorings Studienarbeit Code Generators: –Generate Accessors –Generate Constructors Using Fields –Override Method Refactorings: –Push Down Method –Rename Local Variable

7 Page 7 Lukas Felber, Mirko Stocker, Thomas Corbat Refactoring Basis Komponenten Refactoring Wizard Ruby Refactoring Edit Provider Document Provider Condition Checker RefactoringWizard EditProvider DocumentProviderConditionChecker MyRefactoring RubyRefactoring

8 Page 8 Lukas Felber, Mirko Stocker, Thomas Corbat Refactorings Convert Local Variable to Field Encapsulate Field Extract Method Move Method Move Field Split Temporary Variable Inline Method Inline Class Inline Temp Merge Class Parts Rename Field Rename Method Rename Class Rename Local Variable

9 Page 9 Lukas Felber, Mirko Stocker, Thomas Corbat Convert Local Variable to Field Alle vorkommen der angewählten lokalen Variable finden Falls gewünscht Deklaration der lokalen Variable entfernen und Deklaration des Feldes in Konstruktor einfügen. Lokale Variablen durch Feld ersetzen

10 Page 10 Lukas Felber, Mirko Stocker, Thomas Corbat Encapsulate Field Accessors für selektiertes Feld finden Entsprechende getter- und setter- Methoden generieren Bestehende Accessors löschen Ruby Accessors: attr_accessor:myPublicField attr_reader:myReadableField attr_writer:myWritableField Accessors ermöglichen den Zugriff auf Felder von ausserhalb einer Klasse.

11 Page 11 Lukas Felber, Mirko Stocker, Thomas Corbat Extract Method Falls nötig aktuelle Selektion sinnvoll erweitern Selektierten Codeblock ermitteln Lokale Variablen, welche als Argumente benötigt werden, ermitteln. Rückgabewerte ermitteln (in Ruby auch mehrere möglich). Selektierter Codeblock mit Methodenaufruf ersetzen und neue Methodendefinition einfügen

12 Page 12 Lukas Felber, Mirko Stocker, Thomas Corbat Move Method movingMethod ermitteln und verschieben Falls verlangt delegate-Method in SourceClass einfügen Referenzen anpassen: –Aufrufe von movingMethod in SourceClass –Aufrufe von SourceClass Methoden in movingMethod –Zugriffe auf Felder von SourceClass in movingMethod Accessoren und Methoden-Visibility anpassen, dass alle Referenzen gültig bleiben movingMethod() SourceClassTargetClass

13 Page 13 Lukas Felber, Mirko Stocker, Thomas Corbat Move Field Feld in eine andere Klasse verschieben: –Accessors in Zielklasse erstellen, in Quellklasse durch Delegate-Methode ersetzen –Verwendung innerhalb der Quellklasse auf Zielklasse delegieren

14 Page 14 Lukas Felber, Mirko Stocker, Thomas Corbat Split Temporary Variable Jeder Verwendung einer lokalen Variablen einen neuen Namen zuweisen Prinzipiell wie Rename Local Variable, nur in anderem Scope

15 Page 15 Lukas Felber, Mirko Stocker, Thomas Corbat Inline Method Ersetzt Methodenaufruf durch Definiton –Parameter umbenennen oder neu einführen –Aufrufe von self auf Referenz umbiegen –returns entfernen und Werte zuweisen –auf Wunsch Definition löschen Bedingungen: –Höchstens ein return-Aufruf –return muss am Ende stehen

16 Page 16 Lukas Felber, Mirko Stocker, Thomas Corbat Inline Class Integrieren der Funktionalität einer Klasse in eine andere. Restriktion: –Aufnehmende Klasse muss eine Instanz der Ziel-Klasse in ihrem Konstruktor anlegen. –Dieser Aufruf des nicht mehr existierenden Konstruktors wird durch die eigene Instanz ersetzt. Ablauf: –Auswahl der Zielklasse –Verschieben der Methoden und Felder –Umbenennen der Methoden und Felder bei Konflikten –Verschieben und Umbenennen des Konstruktors –Löschen der integrierten Klasse

17 Page 17 Lukas Felber, Mirko Stocker, Thomas Corbat Inline Temp Ersetzt eine lokale Variable durch deren Wert. Ersetzung durch Methodenaufruf möglich. Restriktionen: –Nur eine Zuweisung der Variable –Keine Selbstzuweisung –Keine Parameter Problem: –Veränderung von mathematischen Ausdrücken Code:Nach Ersetzung:Besser wäre: summe = produkt = summe * 5produkt = * 5produkt = (5 + 5) * produkt hat den Wert 50produkt hat den Wert 30produkt: 50

18 Page 18 Lukas Felber, Mirko Stocker, Thomas Corbat Merge Class Parts Zusammenziehen von Klassenteilen Zwei Refactorings für Teile in derselben Datei und Teile in mehreren Dateien Ablauf: –Selektion der Klassen-Teile –Auswahl der Ziel-Definition –Verschieben der Teile ans Ende der Ziel- Definition

19 Page 19 Lukas Felber, Mirko Stocker, Thomas Corbat Rename Field Umbenennen eines Feldes Vorgehen: –Der Cursor muss auf einem Feld platziert werden –Eingabe eines neuen gültigen Namens –Vorschlag der umzubenennenden Vorkommen –Auswahl der umzubenennenden Vorkommen –Umbenennen der Accessors

20 Page 20 Lukas Felber, Mirko Stocker, Thomas Corbat Rename Method Umbenennen einer Methode Vorgehen: –Selektion einer Methoden-Definition –Eingabe eines neuen gültigen Namens –Vorschlag der umzubenennenden Aufrufe –Auswahl der umzubenennenden Aufrufe

21 Page 21 Lukas Felber, Mirko Stocker, Thomas Corbat Rename Class Klasse umbenennen: –Instanzierungen –andere Definitonen derselben Klasse –Subklassen

22 Page 22 Lukas Felber, Mirko Stocker, Thomas Corbat Rename Local Variable Lokale Variablen beinhaltet: –normale, lokale Variablen –Methodenargumente –Variablen in Blöcken, |foo, bar|

23 Page 23 Lukas Felber, Mirko Stocker, Thomas Corbat Testen JUnit-Tests File Driven Tests –Dateien für Original und erwartetem Resultat –Konfiguration für Refactoring in Property-File –Keine Änderungen an Java-Code für neue Tests Continuous Integration mit Cruise Control

24 Page 24 Lukas Felber, Mirko Stocker, Thomas Corbat Ausblick Integration in RDT / JRuby Weiterentwicklung –Weiter Refactorings –Adaption an neue Versionen (Ruby/JRuby/RDT) –Erweiterung bestehender Refactorings Comment Handling

25 Page 25 Lukas Felber, Mirko Stocker, Thomas Corbat Ende Fragen


Herunterladen ppt "Ruby Refactoring Plug-In für Eclipse Präsentation Diplomarbeit Team:Lukas Felber Thomas Corbat Mirko Stocker Betreuung:Prof. Peter Sommerlad Experte:Dr."

Ähnliche Präsentationen


Google-Anzeigen