Refactoring: wie Sie das Design bestehender Software verbessern
Gespeichert in:
1. Verfasser: | |
---|---|
Weitere Verfasser: | , , |
Format: | Buch |
Sprache: | German English |
Veröffentlicht: |
Frechen
mitp
2020
|
Ausgabe: | 2. Auflage |
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | 472 Seiten Illustrationen, Diagramme |
ISBN: | 9783958459410 3958459412 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV045294063 | ||
003 | DE-604 | ||
005 | 20201008 | ||
007 | t | ||
008 | 181116s2020 xxua||| |||| 00||| ger d | ||
016 | 7 | |a 1172909393 |2 DE-101 | |
020 | |a 9783958459410 |c Broschur : EUR 44.99 (DE) |9 978-3-95845-941-0 | ||
020 | |a 3958459412 |9 3-95845-941-2 | ||
035 | |a (OCoLC)1150877772 | ||
035 | |a (DE-599)BVBBV045294063 | ||
040 | |a DE-604 |b ger |e rda | ||
041 | 1 | |a ger |h eng | |
044 | |a xxu |c US | ||
049 | |a DE-M347 |a DE-20 |a DE-91G |a DE-739 |a DE-92 |a DE-860 |a DE-706 |a DE-1050 |a DE-Aug4 |a DE-1051 |a DE-29T |a DE-B768 |a DE-573 |a DE-1043 |a DE-523 |a DE-703 |a DE-83 |a DE-19 |a DE-522 | ||
084 | |a ST 230 |0 (DE-625)143617: |2 rvk | ||
084 | |a DAT 345f |2 stub | ||
084 | |a DAT 325f |2 stub | ||
100 | 1 | |a Fowler, Martin |d 1963- |e Verfasser |0 (DE-588)115868321 |4 aut | |
240 | 1 | 0 | |a Refactoring |
245 | 1 | 0 | |a Refactoring |b wie Sie das Design bestehender Software verbessern |c Martin Fowler ; mit Beiträgen von Kent Beck ; Übersetzung aus dem Englischen von Dr. Jan Linxweiler und Knut Lorenzen |
250 | |a 2. Auflage | ||
264 | 1 | |a Frechen |b mitp |c 2020 | |
300 | |a 472 Seiten |b Illustrationen, Diagramme | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
650 | 0 | 7 | |a Software |0 (DE-588)4055382-6 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Java |g Programmiersprache |0 (DE-588)4401313-9 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Refactoring |0 (DE-588)4784343-3 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Softwareentwicklung |0 (DE-588)4116522-6 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Verbesserung |0 (DE-588)4309013-8 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Programmtransformation |0 (DE-588)4263654-1 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Reengineering |0 (DE-588)4404560-8 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Design |0 (DE-588)4011510-0 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Programmoptimierung |0 (DE-588)4191605-0 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Refactoring |0 (DE-588)4784343-3 |D s |
689 | 0 | |5 DE-604 | |
689 | 1 | 0 | |a Software |0 (DE-588)4055382-6 |D s |
689 | 1 | 1 | |a Design |0 (DE-588)4011510-0 |D s |
689 | 1 | 2 | |a Verbesserung |0 (DE-588)4309013-8 |D s |
689 | 1 | |5 DE-604 | |
689 | 2 | 0 | |a Programmtransformation |0 (DE-588)4263654-1 |D s |
689 | 2 | 1 | |a Programmoptimierung |0 (DE-588)4191605-0 |D s |
689 | 2 | |5 DE-604 | |
689 | 3 | 0 | |a Software |0 (DE-588)4055382-6 |D s |
689 | 3 | 1 | |a Reengineering |0 (DE-588)4404560-8 |D s |
689 | 3 | |5 DE-604 | |
689 | 4 | 0 | |a Softwareentwicklung |0 (DE-588)4116522-6 |D s |
689 | 4 | |8 1\p |5 DE-604 | |
689 | 5 | 0 | |a Java |g Programmiersprache |0 (DE-588)4401313-9 |D s |
689 | 5 | |8 2\p |5 DE-604 | |
700 | 1 | |a Beck, Kent |d 1961- |0 (DE-588)1081570865 |4 ctb | |
700 | 1 | |a Linxweiler, Jan |0 (DE-588)1020638737 |4 trl | |
700 | 1 | |a Lorenzen, Knut |0 (DE-588)1020241446 |4 trl | |
856 | 4 | 2 | |m Digitalisierung UB Passau - ADAM Catalogue Enrichment |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=030681374&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-030681374 | ||
883 | 1 | |8 1\p |a cgwrk |d 20201028 |q DE-101 |u https://d-nb.info/provenance/plan#cgwrk | |
883 | 1 | |8 2\p |a cgwrk |d 20201028 |q DE-101 |u https://d-nb.info/provenance/plan#cgwrk |
Datensatz im Suchindex
_version_ | 1804179073695481856 |
---|---|
adam_text | Inhaltsverzeichnis 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 2 2.1 2.2 2.3 Vorwort zur ersten Auflage............................................................................... 15 Über den Fachkorrektor der deutschen Ausgabe............................................ 17 Einleitung........................................................................................................... Was ist Refactoring?......................................................................................... Worum geht es in diesem Buch?..................................................................... Wer sollte dieses Buch lesen?............................................................................ Von anderen geschaffene Grundlagen.............................................................. Danksagungen................................................................................................... 19 20 21 23 24 25 Refactoring: Ein erstes Beispiel........................................................................ Der Ausgangspunkt........................................................................................... Anmerkungen zum ersten Programm.............................................................. Der erste Schritt des Refactorings.................................................................... Aufteilung der statement-Funktion.................................................................. 1.4.1 Entfernen der Variable play................................................................ 1.4.2 Extrahieren der Berechnung von
Treuepunkten.............................. 1.4.3 Entfernen der Variable format............................................................ 1.4.4 Entfernen der Gesamtzahl der Treuepunkte...................................... Status: Eine Menge verschachtelter Funktionen.............................................. Die Phasen Berechnung und Formatierung voneinander trennen................ Status: Aufgeteilt in zwei Dateien (und Phasen).............................................. Neuorganisation der Berechnungen nach Art.................................................. 1.8.1 Berechnen der Kosten einer Vorstellung............................................ 1.8.2 Funktionen in die Klasse verschieben................................................ 1.8.3 Polymorphes Verhalten der Klasse PerformanceCalculator............ Status: Erzeugen der Daten mit der polymorphen Klasse PerformanceCalculator..................................................................................... Abschließende Überlegungen......................................................................... 27 27 30 31 32 38 43 44 47 52 54 63 66 68 69 71 Prinzipien des Refactorings............................................................................. Refactoring: Definition..................................................................................... Die beiden Hüte................................................................................................. Gründe für ein Refactoring............................................................................... 2.3.1 Refactoring verbessert
das Design der Software................................ 2.3.2 Refactoring macht Software besser verständlich.............................. 2.3.3 Refactoring hilft mir, Bugs aufzuspüren............................................ 2.3.4 Refactoring hilft mir, schneller zu programmieren.......................... 79 79 80 81 81 81 82 82 74 77
Inhaltsverzeichnis Inhaltsverzeichnis 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 Der richtige Zeitpunkt für ein Refactoring...................................................... 84 2.4.1 Vorbereitendes Refactoring: Hinzufügen eines Features vereinfachen....................................................................................... 84 2.4.2 Refactoring zwecks Verbesserung der Verständlichkeit des Codes................................................................................................... 85 2.4.3 Refactoring als Abfallentsorgung...................................................... 86 2.4.4 Geplantes Refactoring und spontanes Refactoring.......................... 86 2.4.5 Langfristiges Refactoring.................................................................... 87 2.4.6 Refactoring beim Code-Review.......................................................... 88 2.4.7 Wie sag ich’s meinem Chef?.............................................................. 89 2.4.8 Wann sollte man kein Refactoring durchführen?............................ 89 Probleme beim Refactoring............................................................................. 90 2.5.1 Verlangsamung der Entwicklung neuer Features............................ 90 2.5.2 Code-Eigentümerschaft..................................................................... 91 2.5.3 Entwicklungszweige........................................................................... 92 2.5.4
Testen................................................................................................. 94 2.5.5 Legacy Code......................................................................................... 95 2.5.6 Datenbanken....................................................................................... 96 Refactoring, Architektur und Yagni................................................................. 97 Refactoring und der Softwareentwicklungsprozess........................................ 98 Refactoring und Performance......................................................................... 99 Ursprünge des Refactorings............................................................................. 102 Automatisiertes Refactoring............................................................................. 103 Weiterführende Literatur................................................................................. 105 Code-Smells: Schlechte Gerüche im Code....................................................... Rätselhafte Bezeichnung................................................................................. Redundanter Code............................................................................................. Lange Funktion................................................................................................. Lange Parameterliste......................................................................................... Globale Daten...................................................................................................
Veränderliche Daten......................................................................................... Divergierende Änderungen............................................................................. Chirurgie mit der Schrotflinte......................................................................... Feature-Neid..................................................................................................... Datenklumpen................................................................................................... Obsession für elementare Datentypen.............................................................. Wiederholte switch-Anweisungen................................................................... Schleifen............................................................................................................. Träges Element................................................................................................. Spekulative Generalisierung............................................................................. Temporäres Feld............................................................................................... Mitteilungsketten............................................................................................. Vermittler........................................................................................................... Insiderhandel..................................................................................................... 107 108 108 109 HO 110 111 112 113 113 114 115 115 116 116 116 117 117
118 118 3.20 3.21 3.22 3.23 3.24 Umfangreiche Klasse......................................................................................... Alternative Klassen mit unterschiedlichen Schnittstellen.............................. Datenklasse....................................................................................................... Ausgeschlagenes Erbe....................................................................................... Kommentare....................................................................................................... 118 119 119 120 120 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 Tests erstellen..................................................................................................... Der Nutzen selbsttestenden Codes................................................................... Beispielcode zum Testen................................................................................... Ein erster Test................................................................................................... Hinzufügen eines weiteren Tests..................................................................... Ändern des Test-Fixtures................................................................................. Austesten der Grenzen..................................................................................... Und noch viel mehr........................................................................................... 123 123 125 129 132 134 135 139 5 5.1 5.2 Der
Katalog......................................................................................................... Format der Refactorings................................................................................... Die Auswahl der Refactorings........................................................................... 141 141 142 6 6.1 Eine erste ZusammensteUung von Refactorings.............................................. Funktion extrahieren (Extract Function).......................................................... 6.1.1 Motivation........................................................................................... 6.1.2 Vorgehen............................................................................................. 6.1.3 Beispiel: Keine Variablen außerhalb des Gültigkeitsbereichs.......... 6.1.4 Beispiel: Verwendung lokaler Variablen............................................ 6.1.5 Beispiel: Zuweisung zu einer lokalen Variable.................................. Funktion inline platzieren (Inline Function).................................................... 6.2.1 Motivation........................................................................................... 6.2.2 Vorgehen............................................................................................. 6.2.3 Beispiel................................................................................................. Variable extrahieren (Extract Variable).............................................................. 6.3.1
Motivation........................................................................................... 6.3.2 Vorgehen............................................................................................. 6.3.3 Beispiel................................................................................................. 6.3.4 Beispiel mit einer Klasse..................................................................... Variable inline platzieren (Inline Variable)...................................................... 6.4.1 Motivation............................................................................................ 6.4.2 Vorgehen............................................................................................. Funktionsdeklaration ändern (Change Function Declaration)........................ 6.5.1 Motivation........................................................................................... 6.5.2 Vorgehen............................................................................................. 6.5.3 Beispiel: Umbenennen einer Funktion (einfaches Vorgehen)........ 6.5.4 Beispiel: Umbenennen einer Funktion (Migrationsansatz)............ 6.5.5 Beispiel: Hinzufügen eines Parameters............................................ 6.5.6 Beispiel: Einen Parameter durch eine seiner Eigenschaften ersetzen 145 145 146 147 148 151 152 155 156 156 157 159 159 160 160 162 163 164 164 164 165 166 167 168 169 6.2 6.3 6.4 6.5 170
Inhaltsverzeichnis Inhaltsverzeichnis 6.6 6.7 6.8 6.9 6.10 6.11 7 7.1 7.2 7.3 7.4 Variable kapseln (Encapsulate Variable).......................................................... 6.6.1 Motivation........................................................................................... 6.6.2 Vorgehen............................................................................................. 6.6.3 Beispiel............................................................................................... Variable umbenennen (Rename Variable)...................................................... 6.7.1 Motivation........................................................................................... 6.7.2 Vorgehen............................................................................................. 6.7.3 Beispiel............................................................................................... Parameterobjekt einführen(Introduce Parameter Object)............................. 6.8.1 Motivation........................................................................................... 6.8.2 Vorgehen............................................................................................. 6.8.3 Beispiel............................................................................................... Funktionen zu einer Klasse vereinen (Combine Functions into Class)........ 6.9.1 Motivation........................................................................................... 6.9.2
Vorgehen............................................................................................. 6.9.3 Beispiel............................................................................................... Funktionen zu einer Transformation vereinen (Combine Functions into Transform)......................................................................................................... 6.10.1 Motivation........................................................................................... 6.10.2 Vorgehen............................................................................................. 6.10.3 Beispiel............................................................................................... Phase aufteilen (Split Phase)........................................................................... 6.11.1 Motivation........................................................................................... 6.11.2 Vorgehen............................................................................................. 6.11.3 Beispiel............................................................................................... Kapselung.......................................................................................................... Datensatz kapseln (Encapsulate Record).......................................................... 7.1.1 Motivation........................................................................................... 7.1.2 Vorgehen............................................................................................. 7.1.3
Beispiel............................................................................................... 7.1.4 Beispiel: Kapselung eines verschachtelten Datensatzes.................. Collection kapseln (Encapsulate Collection).................................................... 7.2.1 Motivation........................................................................................... 7.2.2 Vorgehen............................................................................................. 7.2.3 Beispiel............................................................................................... Elementaren Wert durch Objekt ersetzen (Replace Primitive with Object)............................................................................................................... 7.3.1 Motivation........................................................................................... 7.3.2 Vorgehen............................................................................................. 7.3.3 Beispiel............................................................................................... Temporäre Variable durch Abfrage ersetzen(Replace Temp with Query)... 7.4.1 Motivation........................................................................................... 7.4.2 Vorgehen............................................................................................. 7.4.3 Beispiel............................................................................................... 172 173 174 174 177 178 178 178 180 180 181 181 184 185 185 186 7.5 7.6 7.7 7.8 7.9 189 190
190 191 195 196 196 197 203 203 204 205 205 207 212 213 214 214 8 8.1 8.2 8.3 8.4 217 217 218 218 221 222 223 223 8.5 Klasse extrahieren (Extract Class)..................................................................... 225 7.5.1 Motivation........................................................................................... 226 7.5.2 Vorgehen............................................................................................. 226 7.5.3 Beispiel................................................................................................. 227 Klasse inline platzieren (Inline Class)............................................................. 229 7.6.1 Motivation........................................................................................... 230 7.6.2 Vorgehen............................................................................................. 230 7.6.3 Beispiel................................................................................................. 231 Delegation verbergen (Hide Delegate).............................................................. 232 7.7.1 Motivation........................................................................................... 233 7.7.2 Vorgehen............................................................................................. 234 7.7.3 Beispiel................................................................................................. 234 Vermittler entfernen (Remove Middle Man).................................................... 235 7.8.1
Motivation........................................................................................... 235 7.8.2 Vorgehen............................................................................................. 236 7.8.3 Beispiel................................................................................................. 236 Algorithmus ersetzen (Substitute Algorithm).................................................. 237 7.9.1 Motivation........................................................................................... 238 7.9.2 Vorgehen............................................................................................. 239 Verschiebungen.................................................................................................. Funktion verschieben (Move Function)........................................................... 8.1.1 Motivation........................................................................................... 8.1.2 Vorgehen............................................................................................. 8.1.3 Beispiel: Verschieben einer verschachtelten Funktion in die oberste Ebene....................................................................................... 8.1.4 Beispiel: Verschiebungen zwischen Klassen...................................... Feld verschieben (Move Field)......................................................................... 8.2.1 Motivation........................................................................................... 8.2.2
Vorgehen............................................................................................. 8.2.3 Beispiel................................................................................................. 8.2.4 Beispiel: Verschiebung inein gemeinsam genutztes Objekt............. Anweisungen in Funktion verschieben (Move Statements intoFunction)... 8.3.1 Motivation........................................................................................... 8.3.2 Vorgehen............................................................................................. 8.3.3 Beispiel................................................................................................. Anweisungen in Aufrufer verschieben (Move Statementsto Caller)............... 8.4.1 Motivation........................................................................................... 8.4.2 Vorgehen............................................................................................. 8.4.3 Beispiel................................................................................................. Inline-Code durch Funktionsaufruf ersetzen (Replace Inline Code with Function Call)..................................................................................................... 8.5.1 Motivation........................................................................................... 8.5.2 Vorgehen............................................................................................. 241 241 242 242 243 248 251 251 253 253 255 257 258 258 259 261 262 262 263 267 267 268
Inhaltsverzeichnis Inhaltsverzeichnis 8.6 8.7 8.8 8.9 9 9.1 9.2 9.3 9.4 9.5 Anweisungen verschieben (Slide Statements).................................................. 8.6.1 Motivation.............................................................................................. 8.6.2 Vorgehen................................................................................................ 8.6.3 Beispiel.................................................................................................. 8.6.4 Beispiel: Verschiebungen und bedingte Anweisungen....................... 8.6.5 Literaturhinweis.................................................................................... Schleife aufteilen (Split Loop).............................................................................. 8.7.1 Motivation.............................................................................................. 8.7.2 Vorgehen................................................................................................ 8.7.3 Beispiel.................................................................................................. Schleife durch Pipeline ersetzen (Replace Loop with Pipeline)......................... 8.8.1 Motivation.............................................................................................. 8.8.2 Vorgehen................................................................................................ 8.8.3 Beispiel.................................................................................................. 8.8.4
Literaturhinweis.................................................................................... Toten Code entfernen (Remove Dead Code)...................................................... 8.9.1 Motivation.............................................................................................. 8.9.2 Vorgehen................................................................................................ 268 269 269 269 271 272 273 273 274 274 277 277 277 278 283 283 283 284 Daten organisieren............................................................................................... 285 Variable aufteilen (Split Variable)...................................................................... 285 9.1.1 Motivation.............................................................................................. 286 9.1.2 Vorgehen................................................................................................ 286 9.1.3 Beispiel.................................................................................................. 286 9.1.4 Beispiel: Zuweisungzu einem Eingabeparameter................................ 288 Feld umbenennen (Rename Field).................................................................... 289 9.2.1 Motivation.............................................................................................. 290 9.2.2 Vorgehen................................................................................................ 290 9.2.3 Beispiel: Umbenennen eines Feldes.................................................... 290 Abgeleitete Variable
durch Abfrage ersetzen (Replace Derived Variable with Query)....................................................................................................... 293 9.3.1 Motivation.............................................................................................. 294 9.3.2 Vorgehen................................................................................................ 294 9.3.3 Beispiel.................................................................................................. 295 9.3.4 Beispiel: Mehr als eine Quelle.............................................................. 296 Referenz durch Wert ersetzen (Change Reference to Value)............................ 297 9.4.1 Motivation.............................................................................................. 298 9.4.2 Vorgehen................................................................................................ 298 9.4.3 Beispiel.................................................................................................. 298 Wert durch Referenz ersetzen (Change Value to Reference)............................. 301 9.5.1 Motivation.............................................................................................. 301 9.5.2 Vorgehen................................................................................................ 302 9.5.3 Beispiel.................................................................................................. 302 10 10.1 10.2 10.3 10.4 10.5 10.6 11 11.1 11.2 Bedingungen
vereinfachen................................................................................ Bedingung zerlegen (Decompose Conditional)................................................ 10.1.1 Motivation........................................................................................... 10.1.2 Vorgehen............................................................................................. 10.1.3 Beispiel................................................................................................. Bedingten Ausdruck zusammenfassen (Consolidate Conditional Expression)......................................................................................................... 10.2.1 Motivation........................................................................................... 10.2.2 Vorgehen............................................................................................. 10.2.3 Beispiel................................................................................................. 10.2.4 Beispiel: Verwendung von »and«........................................................ Verschachtelte Bedingung durch Wächterbedingung ersetzen (Replace Nested Conditional with Guard Clauses).......................................... 10.3.1 Motivation........................................................................................... 10.3.2 Vorgehen............................................................................................. 10.3.3 Beispiel................................................................................................. 10.3.4
Beispiel: Umkehrung der Bedingungen............................................ Bedingung durch Polymorphie ersetzen (Replace Conditional with Polymorphism) ................................................................................................. 10.4.1 Motivation........................................................................................... 10.4.2 Vorgehen............................................................................................. 10.4.3 Beispiel................................................................................................. 10.4.4 Beispiel: Polymorphie für Variationen verwenden............................ Sonderfall einführen (Introduce Special Case)................................................ 10.5.1 Motivation........................................................................................... 10.5.2 Vorgehen............................................................................................. 10.5.3 Beispiel................................................................................................. 10.5.4 Beispiel: Verwendung eines Objekts mit Literalen............................ 10.5.5 Beispiel: Verwenden einer Transformation...................................... Assertion einführen (Introduce Assertion)...................................................... 10.6.1 Motivation........................................................................................... 10.6.2 Vorgehen............................................................................................. 10.6.3
Beispiel................................................................................................. Refactoring von APIs........................................................................................... Abfrage von Veränderung trennen (Separate Query from Modifier).............. 11.1.1 Motivation........................................................................................... 11.1.2 Vorgehen............................................................................................. 11.1.3 Beispiel................................................................................................. Funktion parametrisieren (Parameterize Function)........................................ 11.2.1 Motivation........................................................................................... 11.2.2 Vorgehen............................................................................................. 11.2.3 Beispiel................................................................................................. 305 305 306 306 306 308 309 309 310 310 311 312 312 313 315 317 318 318 319 324 336 337 337 338 343 346 351 351 352 352 355 355 356 356 357 359 360 360 360
Inhaltsverzeichnis Inhaltsverzeichnis 11.3 11.4 11.5 11.6 11.7 11.8 11.9 11.10 12 12.1 12.2 12.3 Steuerungs-Flag entfernen (Remove Flag Argument).................................... 11.3.1 Motivation........................................................................................... 11.3.2 Vorgehen............................................................................................. 11.3.3 Beispiel............................................................................................... Vollständiges Objekt erhalten (Preserve Whole Object).................................. 11.4.1 Motivation........................................................................................... 11.4.2 Vorgehen............................................................................................. 11.4.3 Beispiel............................................................................................... 11.4.4 Beispiel: Eine Variante zum Erstellen der neuen Funktion............ Parameter durch Abfrage ersetzen (Replace Parameter with Query)............ 11.5.1 Motivation........................................................................................... 11.5.2 Vorgehen............................................................................................. 11.5.3 Beispiel............................................................................................... Abfrage durch Parameter ersetzen (Replace Query with Parameter)............ 11.6.1 Motivation........................................................................................... 11.6.2
Vorgehen............................................................................................. 11.6.3 Beispiel............................................................................................... Setter entfernen (Remove Setting Method)...................................................... 11.7.1 Motivation........................................................................................... 11.7.2 Vorgehen............................................................................................. 11.7.3 Beispiel............................................................................................... Konstruktor durch Fabrikfunktion ersetzen (Replace Constructor with Factory Function)..................................................................................... 11.8.1 Motivation........................................................................................... 11.8.2 Vorgehen............................................................................................. 11.8.3 Beispiel............................................................................................... Funktion durch Befehl ersetzen (Replace Function with Command)............ 11.9.1 Motivation........................................................................................... 11.9.2 Vorgehen............................................................................................. 11.9.3 Beispiel............................................................................................... Befehl durch Funktion ersetzen (Replace Command with
Function)............ 11.10.1 Motivation........................................................................................... 11.10.2 Vorgehen............................................................................................. 11.10.3 Beispiel............................................................................................... 363 363 365 365 368 369 369 370 371 373 374 375 375 376 377 378 378 381 381 382 382 383 384 384 384 385 386 387 387 393 393 394 394 Der Umgang mit Vererbung............................................................................. Methode nach oben verschieben (Pull Up Method)........................................ 12.1.1 Motivation........................................................................................... 12.1.2 Vorgehen............................................................................................. 12.1.3 Beispiel............................................................................................... Feld nach oben verschieben (Pull Up Field).................................................... 12.2.1 Motivation........................................................................................... 12.2.2 Vorgehen............................................................................................. Konstruktorrumpf nach oben verschieben (Pull Up Constructor Body)........ 12.3.1 Motivation............................................................................................ 399 399 400 401 401 402 403 403 404 405 12.4 12.5 12.6 12.7 12.8 12.9 12.10 12.11 12.3.2
Vorgehen............................................................................................. 12.3.3 Beispiel................................................................................................. Methode nach unten verschieben (Push Down Method)................................ 12.4.1 Motivation........................................................................................... 12.4.2 Vorgehen............................................................................................. Feld nach unten verschieben (Push Down Field)............................................ 12.5.1 Motivation........................................................................................... 12.5.2 Vorgehen............................................................................................. Typenschlüssel durch Unterklassen ersetzen (Replace Type Code with Subclasses)................................................................................................. 12.6.1 Motivation........................................................................................... 12.6.2 Vorgehen............................................................................................. 12.6.3 Beispiel................................................................................................. 12.6.4 Beispiel: Indirekte Vererbung............................................................ Unterklasse entfernen (Remove Subclass)........................................................ 12.7.1
Motivation........................................................................................... 12.7.2 Vorgehen............................................................................................. 12.7.3 Beispiel................................................................................................. Basisklasse extrahieren (Extract Superclass).................................................... 12.8.1 Motivation........................................................................................... 12.8.2 Vorgehen............................................................................................. 12.8.3 Beispiel................................................................................................. Hierarchie abbauen (Collapse Hierarchy)........................................................ 12.9.1 Motivation........................................................................................... 12.9.2 Vorgehen............................................................................................. Unterklasse durch Delegation ersetzen (Replace Subclass with Delegate)... 12.10.1 Motivation........................................................................................... 12.10.2 Vorgehen............................................................................................. 12.10.3 Beispiel................................................................................................. 12.10.4 Beispiel: Ersetzen einer Hierarchie.................................................... Basisklasse durch Delegation
ersetzen (Replace Superclass with Delegate)............................................................................................................. 12.11.1 Motivation........................................................................................... 12.11.2 Vorgehen............................................................................................. 12.11.3 Beispiel................................................................................................. 405 405 408 409 409 409 410 410 410 411 411 412 415 418 419 419 419 424 425 425 425 429 429 430 430 431 432 433 440 450 451 452 452 A Bibliografie 457 В Liste der Refactorings 461 C Code-Smells 463 Stichwortverzeichnis 467
|
any_adam_object | 1 |
author | Fowler, Martin 1963- |
author2 | Beck, Kent 1961- Linxweiler, Jan Lorenzen, Knut |
author2_role | ctb trl trl |
author2_variant | k b kb j l jl k l kl |
author_GND | (DE-588)115868321 (DE-588)1081570865 (DE-588)1020638737 (DE-588)1020241446 |
author_facet | Fowler, Martin 1963- Beck, Kent 1961- Linxweiler, Jan Lorenzen, Knut |
author_role | aut |
author_sort | Fowler, Martin 1963- |
author_variant | m f mf |
building | Verbundindex |
bvnumber | BV045294063 |
classification_rvk | ST 230 |
classification_tum | DAT 345f DAT 325f |
ctrlnum | (OCoLC)1150877772 (DE-599)BVBBV045294063 |
discipline | Informatik |
edition | 2. Auflage |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>03209nam a2200721 c 4500</leader><controlfield tag="001">BV045294063</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20201008 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">181116s2020 xxua||| |||| 00||| ger d</controlfield><datafield tag="016" ind1="7" ind2=" "><subfield code="a">1172909393</subfield><subfield code="2">DE-101</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9783958459410</subfield><subfield code="c">Broschur : EUR 44.99 (DE)</subfield><subfield code="9">978-3-95845-941-0</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">3958459412</subfield><subfield code="9">3-95845-941-2</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)1150877772</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV045294063</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="1" ind2=" "><subfield code="a">ger</subfield><subfield code="h">eng</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">xxu</subfield><subfield code="c">US</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-M347</subfield><subfield code="a">DE-20</subfield><subfield code="a">DE-91G</subfield><subfield code="a">DE-739</subfield><subfield code="a">DE-92</subfield><subfield code="a">DE-860</subfield><subfield code="a">DE-706</subfield><subfield code="a">DE-1050</subfield><subfield code="a">DE-Aug4</subfield><subfield code="a">DE-1051</subfield><subfield code="a">DE-29T</subfield><subfield code="a">DE-B768</subfield><subfield code="a">DE-573</subfield><subfield code="a">DE-1043</subfield><subfield code="a">DE-523</subfield><subfield code="a">DE-703</subfield><subfield code="a">DE-83</subfield><subfield code="a">DE-19</subfield><subfield code="a">DE-522</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 230</subfield><subfield code="0">(DE-625)143617:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 345f</subfield><subfield code="2">stub</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 325f</subfield><subfield code="2">stub</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Fowler, Martin</subfield><subfield code="d">1963-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)115868321</subfield><subfield code="4">aut</subfield></datafield><datafield tag="240" ind1="1" ind2="0"><subfield code="a">Refactoring</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Refactoring</subfield><subfield code="b">wie Sie das Design bestehender Software verbessern</subfield><subfield code="c">Martin Fowler ; mit Beiträgen von Kent Beck ; Übersetzung aus dem Englischen von Dr. Jan Linxweiler und Knut Lorenzen</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">2. Auflage</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Frechen</subfield><subfield code="b">mitp</subfield><subfield code="c">2020</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">472 Seiten</subfield><subfield code="b">Illustrationen, Diagramme</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Software</subfield><subfield code="0">(DE-588)4055382-6</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Java</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4401313-9</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Refactoring</subfield><subfield code="0">(DE-588)4784343-3</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Softwareentwicklung</subfield><subfield code="0">(DE-588)4116522-6</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Verbesserung</subfield><subfield code="0">(DE-588)4309013-8</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Programmtransformation</subfield><subfield code="0">(DE-588)4263654-1</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Reengineering</subfield><subfield code="0">(DE-588)4404560-8</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Design</subfield><subfield code="0">(DE-588)4011510-0</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Programmoptimierung</subfield><subfield code="0">(DE-588)4191605-0</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Refactoring</subfield><subfield code="0">(DE-588)4784343-3</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="689" ind1="1" ind2="0"><subfield code="a">Software</subfield><subfield code="0">(DE-588)4055382-6</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2="1"><subfield code="a">Design</subfield><subfield code="0">(DE-588)4011510-0</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2="2"><subfield code="a">Verbesserung</subfield><subfield code="0">(DE-588)4309013-8</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="689" ind1="2" ind2="0"><subfield code="a">Programmtransformation</subfield><subfield code="0">(DE-588)4263654-1</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="2" ind2="1"><subfield code="a">Programmoptimierung</subfield><subfield code="0">(DE-588)4191605-0</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="2" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="689" ind1="3" ind2="0"><subfield code="a">Software</subfield><subfield code="0">(DE-588)4055382-6</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="3" ind2="1"><subfield code="a">Reengineering</subfield><subfield code="0">(DE-588)4404560-8</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="3" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="689" ind1="4" ind2="0"><subfield code="a">Softwareentwicklung</subfield><subfield code="0">(DE-588)4116522-6</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="4" ind2=" "><subfield code="8">1\p</subfield><subfield code="5">DE-604</subfield></datafield><datafield tag="689" ind1="5" ind2="0"><subfield code="a">Java</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4401313-9</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="5" ind2=" "><subfield code="8">2\p</subfield><subfield code="5">DE-604</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Beck, Kent</subfield><subfield code="d">1961-</subfield><subfield code="0">(DE-588)1081570865</subfield><subfield code="4">ctb</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Linxweiler, Jan</subfield><subfield code="0">(DE-588)1020638737</subfield><subfield code="4">trl</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Lorenzen, Knut</subfield><subfield code="0">(DE-588)1020241446</subfield><subfield code="4">trl</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Passau - ADAM Catalogue Enrichment</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=030681374&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-030681374</subfield></datafield><datafield tag="883" ind1="1" ind2=" "><subfield code="8">1\p</subfield><subfield code="a">cgwrk</subfield><subfield code="d">20201028</subfield><subfield code="q">DE-101</subfield><subfield code="u">https://d-nb.info/provenance/plan#cgwrk</subfield></datafield><datafield tag="883" ind1="1" ind2=" "><subfield code="8">2\p</subfield><subfield code="a">cgwrk</subfield><subfield code="d">20201028</subfield><subfield code="q">DE-101</subfield><subfield code="u">https://d-nb.info/provenance/plan#cgwrk</subfield></datafield></record></collection> |
id | DE-604.BV045294063 |
illustrated | Illustrated |
indexdate | 2024-07-10T08:14:04Z |
institution | BVB |
isbn | 9783958459410 3958459412 |
language | German English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-030681374 |
oclc_num | 1150877772 |
open_access_boolean | |
owner | DE-M347 DE-20 DE-91G DE-BY-TUM DE-739 DE-92 DE-860 DE-706 DE-1050 DE-Aug4 DE-1051 DE-29T DE-B768 DE-573 DE-1043 DE-523 DE-703 DE-83 DE-19 DE-BY-UBM DE-522 |
owner_facet | DE-M347 DE-20 DE-91G DE-BY-TUM DE-739 DE-92 DE-860 DE-706 DE-1050 DE-Aug4 DE-1051 DE-29T DE-B768 DE-573 DE-1043 DE-523 DE-703 DE-83 DE-19 DE-BY-UBM DE-522 |
physical | 472 Seiten Illustrationen, Diagramme |
publishDate | 2020 |
publishDateSearch | 2020 |
publishDateSort | 2020 |
publisher | mitp |
record_format | marc |
spelling | Fowler, Martin 1963- Verfasser (DE-588)115868321 aut Refactoring Refactoring wie Sie das Design bestehender Software verbessern Martin Fowler ; mit Beiträgen von Kent Beck ; Übersetzung aus dem Englischen von Dr. Jan Linxweiler und Knut Lorenzen 2. Auflage Frechen mitp 2020 472 Seiten Illustrationen, Diagramme txt rdacontent n rdamedia nc rdacarrier Software (DE-588)4055382-6 gnd rswk-swf Java Programmiersprache (DE-588)4401313-9 gnd rswk-swf Refactoring (DE-588)4784343-3 gnd rswk-swf Softwareentwicklung (DE-588)4116522-6 gnd rswk-swf Verbesserung (DE-588)4309013-8 gnd rswk-swf Programmtransformation (DE-588)4263654-1 gnd rswk-swf Reengineering (DE-588)4404560-8 gnd rswk-swf Design (DE-588)4011510-0 gnd rswk-swf Programmoptimierung (DE-588)4191605-0 gnd rswk-swf Refactoring (DE-588)4784343-3 s DE-604 Software (DE-588)4055382-6 s Design (DE-588)4011510-0 s Verbesserung (DE-588)4309013-8 s Programmtransformation (DE-588)4263654-1 s Programmoptimierung (DE-588)4191605-0 s Reengineering (DE-588)4404560-8 s Softwareentwicklung (DE-588)4116522-6 s 1\p DE-604 Java Programmiersprache (DE-588)4401313-9 s 2\p DE-604 Beck, Kent 1961- (DE-588)1081570865 ctb Linxweiler, Jan (DE-588)1020638737 trl Lorenzen, Knut (DE-588)1020241446 trl Digitalisierung UB Passau - ADAM Catalogue Enrichment application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=030681374&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis 1\p cgwrk 20201028 DE-101 https://d-nb.info/provenance/plan#cgwrk 2\p cgwrk 20201028 DE-101 https://d-nb.info/provenance/plan#cgwrk |
spellingShingle | Fowler, Martin 1963- Refactoring wie Sie das Design bestehender Software verbessern Software (DE-588)4055382-6 gnd Java Programmiersprache (DE-588)4401313-9 gnd Refactoring (DE-588)4784343-3 gnd Softwareentwicklung (DE-588)4116522-6 gnd Verbesserung (DE-588)4309013-8 gnd Programmtransformation (DE-588)4263654-1 gnd Reengineering (DE-588)4404560-8 gnd Design (DE-588)4011510-0 gnd Programmoptimierung (DE-588)4191605-0 gnd |
subject_GND | (DE-588)4055382-6 (DE-588)4401313-9 (DE-588)4784343-3 (DE-588)4116522-6 (DE-588)4309013-8 (DE-588)4263654-1 (DE-588)4404560-8 (DE-588)4011510-0 (DE-588)4191605-0 |
title | Refactoring wie Sie das Design bestehender Software verbessern |
title_alt | Refactoring |
title_auth | Refactoring wie Sie das Design bestehender Software verbessern |
title_exact_search | Refactoring wie Sie das Design bestehender Software verbessern |
title_full | Refactoring wie Sie das Design bestehender Software verbessern Martin Fowler ; mit Beiträgen von Kent Beck ; Übersetzung aus dem Englischen von Dr. Jan Linxweiler und Knut Lorenzen |
title_fullStr | Refactoring wie Sie das Design bestehender Software verbessern Martin Fowler ; mit Beiträgen von Kent Beck ; Übersetzung aus dem Englischen von Dr. Jan Linxweiler und Knut Lorenzen |
title_full_unstemmed | Refactoring wie Sie das Design bestehender Software verbessern Martin Fowler ; mit Beiträgen von Kent Beck ; Übersetzung aus dem Englischen von Dr. Jan Linxweiler und Knut Lorenzen |
title_short | Refactoring |
title_sort | refactoring wie sie das design bestehender software verbessern |
title_sub | wie Sie das Design bestehender Software verbessern |
topic | Software (DE-588)4055382-6 gnd Java Programmiersprache (DE-588)4401313-9 gnd Refactoring (DE-588)4784343-3 gnd Softwareentwicklung (DE-588)4116522-6 gnd Verbesserung (DE-588)4309013-8 gnd Programmtransformation (DE-588)4263654-1 gnd Reengineering (DE-588)4404560-8 gnd Design (DE-588)4011510-0 gnd Programmoptimierung (DE-588)4191605-0 gnd |
topic_facet | Software Java Programmiersprache Refactoring Softwareentwicklung Verbesserung Programmtransformation Reengineering Design Programmoptimierung |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=030681374&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT fowlermartin refactoring AT beckkent refactoring AT linxweilerjan refactoring AT lorenzenknut refactoring AT fowlermartin refactoringwiesiedasdesignbestehendersoftwareverbessern AT beckkent refactoringwiesiedasdesignbestehendersoftwareverbessern AT linxweilerjan refactoringwiesiedasdesignbestehendersoftwareverbessern AT lorenzenknut refactoringwiesiedasdesignbestehendersoftwareverbessern |