Sie sind hier
E-Book

Effektives Arbeiten mit Legacy Code

Refactoring und Testen bestehender Software

AutorMichael C. Feathers
Verlagmitp Verlags GmbH & Co. KG
Erscheinungsjahr2018
Seitenanzahl432 Seiten
ISBN9783958459021
FormatPDF
Kopierschutzkein Kopierschutz/DRM
GerätePC/MAC/eReader/Tablet
Preis33,99 EUR
Legacy Code steht für Software ohne Tests und einen großen Haufen chaotischer Code, der irgendwie funktioniert, aber keiner weiß wieso. Fast jede Firma arbeitet mit veraltetem Code, der nicht mehr gut läuft oder Performance-Probleme mit sich bringt. Michael Feathers zeigt Software-Entwicklern in diesem Buch, wie sich aus altem Code mehr Performance und Zuverlässigkeit herausholen lässt und wie dieser besser handhabbar wird. Der Leser lernt, wie Software so verändert und Features hinzugefügt werden, dass sie dadurch nicht schlechter wird und wie man Tests schreibt, die vor neuen Problemen schützen. Die Techniken sind für jede Programmiersprache anwendbar, die Beispiele im Buch sind in Java, C++, C und C#.

Michael C. Feathers arbeitet bei Object Mentor Inc. und gibt zahlreiche Schulungen für Refactoring, Objektorientiertes Design uvm.

Kaufen Sie hier:

Horizontale Tabs

Blick ins Buch
Inhaltsverzeichnis
Cover1
Titel3
Impressum4
Inhaltsverzeichnis7
Vorwort13
Geleitwort15
Danksagungen21
Einführung - Wie man dieses Buch lesen sollte23
Teil I: Wie Wandel funktioniert25
Kapitel 1: Software ändern27
1.1 Vier Gründe, Software zu ändern27
1.2 Riskante Änderungen31
Kapitel 2: Mit Feedback arbeiten33
2.1 Was sind Unit-Tests?36
2.2 Higher-Level-Tests39
2.3 Testabdeckung39
2.4 Der Algorithmus zur Änderung von Legacy Code42
Kapitel 3: Überwachung und Trennung45
3.1 Kollaborateure simulieren47
Kapitel 4: Das Seam-Modell53
4.1 Ein riesiges Blatt mit Text53
4.2 Seams54
4.3 Seam-Arten57
Kapitel 5: Tools69
5.1 Automatisierte Refactoring-Tools69
5.2 Mock-Objekte71
5.3 Unit-Test-Harnische72
5.4 Allgemeine Test-Harnische77
Teil II: Software ändern79
Kapitel 6: Ich habe nicht viel Zeit und ich muss den Code ändern81
6.1 Sprout Method83
6.2 Sprout Class87
6.3 Wrap Method91
6.4 Wrap Class95
6.5 Zusammenfassung100
Kapitel 7: Änderungen brauchen eine Ewigkeit101
7.1 Verständlichkeit101
7.2 Verzögerungszeit102
7.3 Dependencies aufheben103
7.4 Zusammenfassung108
Kapitel 8: Wie füge ich eine Funktion hinzu?109
8.1 Test-Driven Development (TDD)110
8.2 Programming by Difference116
8.3 Zusammenfassung125
Kapitel 9: Ich kann diese Klasse nicht in einen Test-Harnisch einfügen127
9.1 Der Fall des irritierenden Parameters127
9.2 Der Fall der verborgenen Dependency134
9.3 Der Fall der verketteten Konstruktionen138
9.4 Der Fall der irritierenden globalen Dependency140
9.5 Der Fall der schrecklichen Include-Dependencies148
9.6 Der Fall der Zwiebel-Parameter152
9.7 Der Fall des Alias-Parameters154
Kapitel 10: Ich kann diese Methode nicht in einem Test-Harnisch ausführen159
10.1 Der Fall der verborgenen Methode159
10.2 Der Fall der »hilfreichen« Sprachfunktion163
10.3 Der Fall des nicht erkennbaren Nebeneffekts166
Kapitel 11: Ich muss eine Änderung vornehmen. Welche Methoden sollte ich testen?173
11.1 Effekte analysieren173
11.2 Vorwärtsanalyse (Reasoning Forward)179
11.3 Effektfortpflanzung (Effect Propagation)184
11.4 Tools für Effektanalysen186
11.5 Von der Effektanalyse lernen188
11.6 Effektskizzen vereinfachen189
Kapitel 12: Ich muss in einem Bereich vieles ändern. Muss ich die Dependencies für alle beteiligten Klassen aufheben?193
12.1 Abfangpunkte194
12.2 Ein Design mit Einschnürpunkten beurteilen201
12.3 Fallen bei Einschnürpunkten203
Kapitel 13: Ich muss etwas ändern, weiß aber nicht, welche Tests ich schreiben soll205
13.1 Charakterisierungs-Tests206
13.2 Klassen charakterisieren209
13.3 Gezielt testen210
13.4 Eine Heuristik für das Schreiben von Charakterisierungs-Tests215
Kapitel 14: Dependencies von Bibliotheken bringen mich um217
Kapitel 15: Meine Anwendung besteht nur aus API-Aufrufen219
Kapitel 16: Ich verstehe den Code nicht gut genug, um ihn zu ändern227
16.1 Notizen/Skizzen228
16.2 Listing Markup229
16.3 Scratch Refactoring230
16.4 Ungenutzten Code löschen231
Kapitel 17: Meine Anwendung hat keine Struktur233
17.1 Die Geschichte des Systems erzählen234
17.2 Naked CRC238
17.3 Conversation Scrutiny241
Kapitel 18: Der Test-Code ist im Weg243
18.1 Konventionen für Klassennamen243
18.2 Der Speicherort für Tests244
Kapitel 19: Mein Projekt ist nicht objektorientiert. Wie kann ich es sicher ändern?247
19.1 Ein einfacher Fall248
19.2 Ein schwieriger Fall248
19.3 Neues Verhalten hinzufügen252
19.4 Die Objektorientierung nutzen255
19.5 Es ist alles objektorientiert258
Kapitel 20: Diese Klasse ist zu groß und soll nicht noch größer werden261
20.1 Aufgaben erkennen264
20.2 Andere Techniken278
20.3 Die nächsten Schritte278
20.4 Nach dem Extrahieren von Klassen281
Kapitel 21: Ich ändere im ganzen System denselben Code283
21.1 Erste Schritte286
Kapitel 22: Ich muss eine Monster-Methode ändern und kann keine Tests dafür schreiben301
22.1 Spielarten von Monstern301
22.2 Monster mit automatischer Refactoring-Unterstützung zähmen306
22.3 Die Herausforderung des manuellen Refactorings308
22.4 Strategie316
Kapitel 23: Wie erkenne ich, dass ich nichts kaputtmache?319
23.1 »Hyperaware Editing«319
23.2 »Single-Goal Editing«321
23.3 »Preserve Signatures«322
23.4 »Lean on the Compiler«325
Kapitel 24: Wir fühlen uns überwältigt. Es wird nicht besser.329
Teil III: Techniken zur Aufhebung von Dependencies333
Kapitel 25: Techniken zur Aufhebung von Dependencies335
25.1 »Adapt Parameter«335
25.2 »Break Out Method Object«339
25.3 »Definition Completion«345
25.4 »Encapsulate Global References«347
25.5 »Expose Static Method«353
25.6 »Extract and Override Call«356
25.7 »Extract and Override Factory Method«358
25.8 »Extract and Override Getter«360
25.9 »Extract Implementer«363
25.10 »Extract Interface«368
25.11 »Introduce Instance Delegator«374
25.12 »Introduce Static Setter«376
25.13 »Link Substitution«382
25.14 »Parameterize Constructor«383
25.15 »Parameterize Method«386
25.16 »Primitivize Parameter«388
25.17 »Pull Up Feature«390
25.18 »Push Down Dependency«394
25.19 »Replace Function with Function Pointer«397
25.20 »Replace Global Reference with Getter«400
25.21 Subclass and Override Method402
25.22 Supersede Instance Variable405
25.23 »Template Redefinition«409
25.24 »Text Redefinition«412
Anhang A: Refactoring415
A.1 Extract Method415
Anhang B: Glossar421
Stichwortverzeichnis423

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

Programmieren lernen in PHP 5

E-Book Programmieren lernen in PHP 5
Format: PDF

Mit der Version 5 erreicht PHP einen bemerkenswerten Reifegrad, der PHP zu einer festen Größe in der Welt der Webprogrammierung macht. Gerade die leichte Erlernbarkeit macht PHP zur idealen…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Weitere Zeitschriften

ARCH+.

ARCH+.

ARCH+ ist eine unabhängige, konzeptuelle Zeitschrift für Architektur und Urbanismus. Der Name ist zugleich Programm: mehr als Architektur. Jedes vierteljährlich erscheinende Heft beleuchtet ...

arznei-telegramm

arznei-telegramm

Das arznei-telegramm® informiert bereits im 53. Jahrgang Ärzte, Apotheker und andere Heilberufe über Nutzen und Risiken von Arzneimitteln. Das arznei-telegramm®  ist neutral und ...

Courier

Courier

The Bayer CropScience Magazine for Modern AgriculturePflanzenschutzmagazin für den Landwirt, landwirtschaftlichen Berater, Händler und generell am Thema Interessierten, mit umfassender ...

Das Grundeigentum

Das Grundeigentum

Das Grundeigentum - Zeitschrift für die gesamte Grundstücks-, Haus- und Wohnungswirtschaft. Für jeden, der sich gründlich und aktuell informieren will. Zu allen Fragen rund um die Immobilie. Mit ...

DER PRAKTIKER

DER PRAKTIKER

Technische Fachzeitschrift aus der Praxis für die Praxis in allen Bereichen des Handwerks und der Industrie. “der praktiker“ ist die Fachzeitschrift für alle Bereiche der fügetechnischen ...

IT-BUSINESS

IT-BUSINESS

IT-BUSINESS ist seit mehr als 25 Jahren die Fachzeitschrift für den IT-Markt Sie liefert 2-wöchentlich fundiert recherchierte Themen, praxisbezogene Fallstudien, aktuelle Hintergrundberichte aus ...