Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

mit Entwicklungsumgebungen (Eclipse) Software verbessern

Ähnliche Präsentationen


Präsentation zum Thema: "mit Entwicklungsumgebungen (Eclipse) Software verbessern"—  Präsentation transkript:

1 mit Entwicklungsumgebungen (Eclipse) Software verbessern
Refaktorisierung mit Entwicklungsumgebungen (Eclipse) Software verbessern Stefan Buchholz

2 Übersicht Kleiner Einstieg in die Refaktorisierung
Tools die Refaktorisierungen unterstützen Ausgesuchte Refektoresierungen am Beispiel Eclipse

3 Das Motivation Das Problem: Die Lösung
Programmierproblem: „allmähliche Verfertigung des Gedankens beim Schreiben“ [2005:Cuber] Sinken der Codequalität bei Wartung des Softwaresystems Die Lösung Refaktorisierung Vom Chaos zur Struktur - Beinträchtigung der Struktur

4 Ziel der Refaktorisierung
Überschaubarkeit und Verständlichkeit des Codes sollen erhöht werden Vereinfachung der Wartbarkeit

5 Definition Refaktorisierung (Substantiv): Eine Änderung an der internen Struktur einer Software, um sie leichter verständlich zu machen und einfacher zu verändern, ohne ihr beobachtbares Verhalten zu ändern. [2000:Fowler] Refaktorisieren (Verb): Eine Software umstrukturieren, ohne ihr beobachtbares Verhalten zu ändern, indem man eine Reihe von Refaktorisierungen anwendet. [2000:Fowler]

6 Refaktorisierungen Es gibt eine große Anzahl von Refaktorisierungen Umbenennung von Feldern und Methoden mit selbsterklärenden Namen Entfernung von Codeduplikaten (Copy & Paste) Weitere Beispiele später …

7 Zeitpunkt der Refaktorisierung
Wenn der Code sowieso angefasst werden muss: Beseitigung von Bugs, Erweiterungen bzw. funktionale Änderungen sollen vorgenommen werden Applikationsteile sollen wieder verwendet werden

8 Sprachen mit Refaktoringtools
Smalltalk Smalltalk Refactoring Browser Java IntelliJ Idea Eclipse JFactor XRefactory Together-J JBuilder RefactorIt JRefactory Transmogrify JafaRefactor CodeGuide Visual Basic Aivosto Project Analyzer .NET ReSharper C# Refactory C# Refactoring Tool C/C++ SlickEdit Ref++ Xrefactory Phyton Bicycle Repair Man Self Guru Delphi Model Maker [Quelle: Smalltalk Quelle der Refaktorisierung Namen der Tools werden genannt auf

9 Refaktorisierung in Eclipse
Umbenennen Versetzen Methodensignatur ändern Anonyme Klasse in verschachtelte konvertieren Verschachtelten Typ in höchste Ebene konvertieren Herabsetzen Hochsetzen Schnittstelle extrahieren Nach Möglichkeit Supertyp verwenden Integrieren Methode extrahieren Lokale Variable extrahieren Konstante extrahieren Lokale Variable in Feld konvertieren Feld kapseln Fabrikmethode extrahieren

10 Variablen / Methoden / Klassen umbenennen
Motivation: Schlecht lesbare Variablen-, Klassen- und Methodennamen Probleme: Klassen / Methoden / Variablen werden an unterschiedlichen Stellen aufgerufen In rename_methode.java, Client.java Problem: Methodenname ist nicht eindeutig gibt Büronummer zurück Methodennamen getTelefonNumber markieren Rechtsklick auf Methodennamen und dann Refactoring -> Umbenennen in getOfficeTelefonNumber Auswirkung in Client.java zeigen

11 Methoden extrahieren Motivation: Probleme: Zu lange Methoden
Doppelter Code Probleme: Lokale / temporäre Variablen sind zu beachten Extract_Methode.java Siehe S 108 Ohne lokale Variable (//print banner) Siehe S 109 Einsatz lokaler Variablen (//print details) Siehe S 110 Neue Zuweisung einer lokalen Variablen (//calculate outstanding)

12 Methode nach oben / unten verschieben
Motivation: Eliminierung redundantem Verhaltens Employee Employee getName Salesman.java, Employee.java, Client.java, Engineer.java Methode getName markieren in Engineer.java oder Salesman.java Rechtsklick Refaktoring -> Hochsetzen… Auswirkungen zeigen in Salesman.java, Employee.java, Client.java, Engineer.java Salesman Engineer Salesman Engineer getName getName

13 Parameter ergänzen / entfernen
Motivation: Änderung einer Methode die Parameter mehr / weniger benötigt Probleme: Auf polymorphe Methoden muss geachtet werden Manuelle Codeänderung nach refaktorisieren notwendig Aktion() markieren Rechte Maustaste -> Refaktorisierung -> Methodensignatur ändern Besser Konstante markieren zum Beispiel die drei Rechte Maustaste -> Refactoring -> Parameter einführen

14 Konstruktor durch Fabrikmethode ersetzen / Typschlüssel durch Unterklassen ersetzen
Motivation Typschlüssel durch Unterklassen ersetzen (hierfür Entwurfsmuster Fabrikmethode zu empfehlen) Problem: Unterschiedliche Aufrufe des bestehenden Konstruktors Manuelles Programmieren des Inhaltes der Fabrikmethode (Refaktorisierung: Typschlüssel durch Unterklassen ersetzen) Konstruktor markieren Rechte Maustaste -> Refactoring -> Factory einführen Hinweis darauf, dass trotzdem Methode programmiert werden muss

15 Interface extrahieren
Motivation: Es werden von den verantwortlichen Klassen nur Teile genutzt <<interface>> Billable Employee getRate hasSpecialSkill getRate hasSpecialSkill getName getDepartment Employee.java, TimeSheet.java In Employee auf rechte Maustaste und Refactoring -> Schnittstelle extrahieren getRate, hasSpecialSkill anhacken Billable eingeben noch und Hacken setzen bei „Verweise auf die Klasse …“ Employee getRate hasSpecialSkill getName getDepartment

16 Quellen Ulrich Cuber; Einstieg in Eclipse 3; Galileo Computing 2005
Oliver Fischer (ck); Aus alt mach neu Refactoring verbessert Software; praxis, iX 4/02, Seite 151 Martin Fowler; Refactoring, Wie Sie das Design vorhandener Software verbessern; Addison-Wesley 2000 Thomas Schoen; Runderneuerung, Ein Überblick über Refactoring und dessen Einsatz bei der Java-Entwicklung; Javamagazin 08/2004 Eclipse Hilfe


Herunterladen ppt "mit Entwicklungsumgebungen (Eclipse) Software verbessern"

Ähnliche Präsentationen


Google-Anzeigen