Diplomarbeitsvortrag

Kleine Refactoring-Muster

Marko Schulz

ms@datenreisender.de

http://datenreisender.de/DA/

Überblick

Wieso? (davor)

Fragen

Muster

Was sind Muster?

Muster in der Softwaretechnik

Refactorings

Refactoring-Muster

Kleine Refactoring-Muster

Anwendung kleiner Refactoring-Muster

Fragen + Antworten

Wieso? (danach)

0

/15

Wieso? (davor)

Große Refactorings

Thema von Martins Doktorarbeit

Planen (und Durchführen)

Wie zerlegt man (große) Refactorings?

Wie wurden Refactorings zerlegt?
(z.B. von Fowler)

wiederkehrende Muster?

1

/15

Fragen

Paßt der Ausdruck „Muster“ von der Größe?

Kann man Refactoring-Muster zu Recht als Muster bezeichnen?

Findet man mehrere kleine Refactoring-Muster?

Was wurde bereits geschrieben?
Was ist an kleinen Refactoring-Mustern neu?

2

/15

Überblick

Wieso? (davor)

Fragen

Muster

Was sind Muster?

Muster in der Softwaretechnik

Refactorings

Refactoring-Muster

Kleine Refactoring-Muster

Anwendung kleiner Refactoring-Muster

Fragen + Antworten

Wieso? (danach)

2,5

/15

Was sind Muster?

Mehrfach belegter Begriff

Konzept basiert auf den Ideen des Architekten Christopher Alexander

Architektur mit Mustern beschreiben

1979 - Vol. 1: The Timeless Way of Building

1977 - Vol. 2: A Pattern Language

1975 - Vol. 3: The Oregon Experiment

3

/15

Was sind Muster? (2)

„Jedes Muster beschreibt zunächst ein in unserer Umwelt immer wieder auftretendes Problem, beschreibt dann den Kern der Lösung dieses Problems, und zwar so, daß man diese Lösung millionenfach anwenden kann, ohne sich je zu wiederholen.“
(aus: Eine Muster-Sprache: Städte, Gebäude, Konstruktionen)

Problem

Lösung

Allgemein anwendbar

Kräfte

Name

Sprache

4

/15

Muster in der Softwaretechnik

1987 das erste Mal in einem Papier mit Software in Zusammenhang gebracht

Entwurfsmuster

Mehr als Entwurfsmuster

Merkmale ähnlich wie bei Alexander

Problem

Lösung

Allgemein anwendbar

(Kräfte) Kontext

Name

(Sprache)

5

/15

Was sind Refactorings?

Restrukturierungen

Fast zeitgleich mit Mustern populär geworden

William Opdyke

Extreme Programming

Martin Fowler

Was sind keine Refactorings?

„A change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior.“ (Martin Fowler)

6

/15

Überblick

Wieso? (davor)

Fragen

Muster

Was sind Muster?

Muster in der Softwaretechnik

Refactorings

Refactoring-Muster

Kleine Refactoring-Muster

Anwendung kleiner Refactoring-Muster

Fragen + Antworten

Wieso? (danach)

6,5

/15

Refactorings als Muster betrachtet

Darf man das? Einige machen es.

Definition: Refactoring-Muster
Ein Refactoring, welches den Charakter von einem Muster besitzt und als solches beschrieben wird.

Fowlers Refactorings als Muster

Nicht alle Refactorings sind Muster

7

/15

Beispiele für kleine Refactoring-Muster

„Typische“ Schritte in Refactorings:

Teile und herrsche

Weiterleitung einführen

Kopieren

Finde alle

Finde Schlüsselelement

Struktur aufbauen

Aufräumen

Deprecate

8

/15

Wann sind Refactoring-Muster „klein“?

Ausführungsdauer

Beibehaltung des Verhaltens

Einbettung von Refactorings

Definition: Eingebettete und umgebende Refactorings
Wenn mehrere Refactorings zu einem größeren Refactoring kombiniert werden, so sind sie in dieses umgebende Refactoring eingebettet.

9

/15

Wann sind Refactoring-Muster „klein“? (2)

Zweck des Refactoring-Musters

Kleine Refactoring-Muster: nach innen gewandt

Größere Refactoring-Muster: nach außen

Definition: Kleines Refactoring-Muster
Ein Refactoring-Muster, welches in Refactorings eingebettet verwendet wird, um die dort üblichen Probleme zu lösen.

10

/15

Das kleine Refactoring-Muster „Finde alle“

Problem: Eine Änderung, erfordert andere Änderungen, welche quer durch den Quelltext verstreut sind.

Lösung: Ermittle ein passendes Suchkriterium und arbeite alle Fundstellen ab.

Wird unterstützt durch „Finde Schlüsselelement“ und „Deprecate“

Unterstützt „Teile und herrsche“

11

/15

Anwendung kleiner Refactoring-Muster

Triviales „Move Method“:

Methode von einer Klasse zu einer anderen verschieben.

Jede Stelle, an der die Methode gerufen wird, umstellen.

12

/15

Anwendung kleiner Refactoring-Muster

„Move Method“ als Refactoring (orientiert an Fowler):

Leere Methode in der Zielklasse erzeugen

Quelltext aus alter Methode kopieren und anpassen

Quelltext in der alten Methode durch eine Weiterleitung ersetzen

Aufrufe der alten Methode (teilweise) auf die neue Methode umstellen

Alte Methode entfernen, so nicht mehr verwendet

Struktur
aufbauen

Kopieren

Weiterleitung einführen

Finde alle

Aufräumen

Teile und herrsche

13

/15

Überblick

Wieso? (davor)

Fragen

Muster

Was sind Muster?

Muster in der Softwaretechnik

Refactorings

Refactoring-Muster

Kleine Refactoring-Muster

Anwendung kleiner Refactoring-Muster

Fragen + Antworten

Wieso? (danach)

Fragen
+ Antworten

Paßt der Ausdruck „Muster“ von der Größe?

Kann man Refactoring-Muster zu Recht als Muster bezeichnen?

Findet man mehrere kleine Refactoring-Muster?

Was wurde bereits geschrieben?
Was ist an kleinen Refactoring-Mustern neu?

Quatsch!
 Ja.

 Ja.

 Ja.

14

/15

Wieso? (danach)

Was bringt das alles?

Wissenschaftlich

Konzept von Refactoring-Mustern

Konzept von kleinen Refactoring-Mustern

Verständnis über den Aufbau von Refactorings

Pragmatisch / Arbeiten mit Refactorings

Refactorings verfassen

Refactorings anpassen

Werkzeuge zur Unterstützung dieser Muster

15

/15

Vielen Dank für die Aufmerksamkeit!

Kleine Refactoring-Muster

2004-05-08T20:37:48