legacy code meistern in x einfachen schritten · refactoring legacy code code smells temporary...

31
1 Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de [email protected] Version: Legacy Code meistern in x einfachen Schritten 1.0 Legacy Code meistern in x einfachen Schritten © 2016 Orientation in Objects GmbH Über mich 2 Falk Sippach (@sippsack) Trainer, Berater, Entwickler Schwerpunkte Architektur Agile Softwareentwicklung Codequalität Co-Organisator

Upload: others

Post on 26-May-2020

32 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

1

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]:

Legacy Code meistern in x einfachen

Schritten

1.0

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH

Über mich

2

Falk Sippach (@sippsack)

Trainer, Berater, Entwickler

SchwerpunkteArchitektur

Agile SoftwareentwicklungCodequalitätCo-Organisator

Page 2: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

2

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH

Java, XML und Open Source seit 1998

) Competence Center)) Object Rangers )

• Schulungen , Coaching , Weiterbildungsberatung , Train & Solve-Programme

• Methoden , Standards und Tools für die Entwicklung von offenen, unternehmens-weiten Systemen

• Unterstützung laufenderJava Projekte

• Perfect Match• Rent-a-team• Coaching on the project• Inhouse Outsourcing

• Schlüsselfertige Realisierungvon Java Software

• Individualsoftware• Pilot- und Migrationsprojekte• Sanierung von Software• Software Wartung

) Software Factory )

3

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH

Legacy Code meistern in

x einfachen Schritten

4

12345678Nur heute,

nicht 1, nicht 2,

Nur heute,nicht 1, nicht 2,

Page 3: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

3

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH

Legacy Code meistern in x einfachen Schritten

5

In einer idealen Welt würden wir nur "neuen" Code schreiben, dernatürlich perfekt und wunderschön ist. Wir müssten nie wieder unserenCode anschauen, geschweige denn 10 Jahre alte Projekte warten. Endedes Tagtraums ... Leider ist unsere Welt nicht so ideal, unser Code vongestern ist heute schon Legacy. Diesen im Nachhinein zu verstehen, zuerweitern oder darin Fehler zu beheben, ist immer eine Herausforderung,insbesondere wenn Tests fehlen.

Trotzdem gibt es einfache Möglichkeiten, wie man die Qualität vonLegacy-Code verbessern kann. Das Wichtigste ist das Einziehen vonFangnetzen, sodass man trotz fehlender Tests guten GewissensÄnderungen durchführen kann. Wer Golden Master, Subclass to Test undExtract Pure Functions an konkreten Beispielen kennenlernen möchte,ist in dieser Session genau richtig.

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 6

Refactoring Legacy CodeRefactoring Legacy Code

Unser Thema heute:Unser Thema heute:

Disclaimer: KEIN ProjekterfahrungsberichtDisclaimer: KEIN Projekterfahrungsbericht

Page 4: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

4

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 7

Legacy CodeLegacy Code

Jeder kennt ihn …Jeder kennt ihn …

Keiner mag ihn …Keiner mag ihn …

Somebody else's codeSomebody else's code

Was ist mit unseremeigenen Code?

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 8

Refactoring Legacy CodeRefactoring Legacy Code

VerstehenVerstehen

ErweiternErweitern

BugfixingBugfixing

Warum?Warum?

Grafik von ClkerFreeVectorImages: https://pixabay.com/de/vitamine-tabletten-pillen-medizin-26622/ (CC0 Public Domain Lizenz)

OptimierungOptimierung

Page 5: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

5

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH

Refactoring Legacy Code

9

Refactoring Legacy Code

Es gibt automatisierte Tests …

Quellcode ist schon testbar …

Annahmen

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 10

https://twitter.com/petecheslock/status/646507209413775360/photo/1

Code CommentsCode Comments

Refactoring Legacy CodeRefactoring Legacy Code

Code SmellsCode Smells

Temporary FieldTemporary Field

Long MethodLong Method

Feature EnvyFeature Envy…

Page 6: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

6

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 11

https://twitter.com/old_sound/status/650490638308409344

Duplicated CodeDuplicated Code

"Gimme Google, Stack Overflow, and this keyboard, and I'll program you anything. "

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 12

Refactoring Legacy Code

Code without

tests

Page 7: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

7

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 13

Foto von smpcas, CC0 Public Domain Lizenz, https://pixabay.com/de/pula-kroatien-amphitheater-erbe-827909/

VermächtnisVermächtnis

ErbeErbe

AltlastAltlast

HinterlassenschaftHinterlassenschaft

LEGACYLEGACY

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 14

Legacy code is valuable codethat we feel afraid to change .

J. B. Rainsberger

Foto von PublicDomainPictures, CC0 Public Domain Lizenz, https://pixabay.com/de/menschen-abdeckung-schrei-314481/

Page 8: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

8

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 15

Code without tests is bad code .

Michael Feathers

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 16

Es ist egal, wie …Es ist egal, wie …

… gut geschrieben der Code ist… gut geschrieben der Code ist

… schön der Code ist… schön der Code ist

… objektorientiert der Code ist… objektorientiert der Code ist

… entkoppelt der Code ist… entkoppelt der Code ist

Testslassen unser Verhalten schnell und verifizierbar ändern

Testslassen unser Verhalten schnell und verifizierbar ändern

Ohne Testswissen wir nicht, ob der Code besser oder schlechter wird

Ohne Testswissen wir nicht, ob der Code besser oder schlechter wird

Page 9: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

9

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 17

Die gute Nachricht …Die gute Nachricht …

Keine WissenschaftKeine Wissenschaft

Gesunder MenschenverstandGesunder MenschenverstandFoto von Engel62: https://pixabay.com/de/daniel-d%C3%BCsentrieb-helferlein-123206/ (CC0 Public Domain Lizenz)

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 18

Hello World vs. 50.000++ LOCHello World vs. 50.000++ LOC

Disziplin (kleine Schritte, …)Disziplin (kleine Schritte, …)

Aussagekräftige TestabdeckungAussagekräftige Testabdeckung

Was macht es dann schwierig?Was macht es dann schwierig?

Page 10: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

10

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 19

Clean Code ist NICHT das ZielClean Code ist NICHT das Ziel

Hauptfokus: testbarer CodeHauptfokus: testbarer Code

Legacy zu Clean Code?Legacy zu Clean Code?

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 20

viel zu teuerviel zu teuer

Code meist kaum/nicht testbarstarke Kopplung, geringe Kohäsion

Code meist kaum/nicht testbarstarke Kopplung, geringe Kohäsion

Dann schreiben wir halt Tests …Dann schreiben wir halt Tests …

Page 11: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

11

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 21

refactoren bräuchte man Tests, Tests würden helfen, Code zuverstehen, um Code zu verstehen könnte man Code refactoren, umCode zu refactoren bräuchte man Tests, Tests würden helfen, Code zuverstehen, um Code zu verstehen könnte man Code refactoren, umCode zu refactoren bräuchte man Tests, Tests würden helfen, Code zuverstehen, um Code zu verstehen könnte man Code refactoren, umCode zu refactoren bräuchte man Tests, Tests würden helfen, Code zuverstehen, um Code zu verstehen könnte man Code refactoren, umCode zu refactoren bräuchte man Tests, Tests würden helfen, Code zuverstehen, um Code zu verstehen könnte man Code refactoren, umCode zu refactoren bräuchte man Tests,Tests würden helfen, Code zuverstehen, um Code zu verstehen könnte man Code refactoren, umCode zu refactoren bräuchte man Tests,Tests würden helfen, Codezu verstehen, um Code zu verstehen könnte man Code refactoren, umCode zu refactoren bräuchte man Tests, Tests würden helfen, Code zuverstehen, um Code zu verstehen könnte man Code refactoren, umCode zu refactoren bräuchte man Tests, Tests würden helfen, Code zu

Henne-Ei-Problem

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 22

um Tests zu schreiben muß der Code testbar sein, um testbaren Codezu erhalten müßte man refactoren, um zu refactoren könnte man Testsschreiben, um Tests zu schreiben muß der Code testbar sein, umtestbaren Code zu erhalten müßte man refactoren, um zu refactorenkönnte man Tests schreiben,um Tests zu schreiben muß der Codetestbar sein, um testbaren Code zu erhalten müßte man refactoren,um zu refactoren könnte man Tests schreiben, um Tests zuschreiben muß der Code testbar sein, um testbaren Code zu erhaltenmüßte man refactoren, um zu refactoren könnte man Tests schreiben,um Tests zu schreiben muß der Code testbar sein, um testbaren Codezu erhalten müßte man refactoren, um zu refactoren könnte man Testsschreiben, um Tests zu schreiben muß der Code testbar sein, umtestbaren Code zu erhalten müßte man refactoren, um zu refactorenkönnte man Tests schreiben, um Tests zu schreiben muß der Codetestbar sein, um testbaren Code zu erhalten müßte man refactoren, umzu refactoren könnte man Tests schreiben, um Tests zu schreiben mußder Code testbar sein, um testbaren Code zu erhalten müßte man refact

Die Katze beißt sich in den Schwanz!

Die Katze beißt sich in den Schwanz!

Page 12: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

12

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH

Vorgehen

1. Identify what to change2. Identify what to test3. Break dependencies4. Write the tests5. Modify and refactoring

23

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 24

Foto von stevepb: https://pixabay.com/de/kugel-patrone-munition-kriminalit%C3%A4t-408636/ (CC0 Public Domain Lizenz)

No Silver BulletNo Silver Bullet

Jedes Projekt individuellJedes Projekt individuell

Vorsicht beim Beheben von offensichtlichen FehlernVorsicht beim Beheben von offensichtlichen Fehlern

Page 13: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

13

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 25

Dann mal her mit den

x einfachen Schritten!

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 26

A

Foto von bella67: https://pixabay.com/de/spinnennetz-mit-wasserperlen-netz-921039/ (CC0 Public Domain Lizenz)

Sicherheitsnetz+ TestsSicherheitsnetz+ Tests

Page 14: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

14

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 27

Foto von KlausHausmann: https://pixabay.com/de/bauarbeiter-bau-bauen-bohrhammer-921224/ (CC0 Public Domain Lizenz)

BSanierungSanierung

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 28

Foto von istara: https://pixabay.com/de/gold-bar-goldbarren-reich-geld-296115/ (CC0 Public Domain Lizenz)

Golden MasterGolden Master1

Page 15: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

15

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 29

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 30

Foto von StockSnap: https://pixabay.com/de/codierung-gesch%C3%A4ft-arbeiten-macbook-699318/ (CC0 Public Domain Lizenz)

Live-CodingLive-Coding

Page 16: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

16

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 31

Golden MasterGolden Master1Vorsicht bei ZufallsgeneratorenVorsicht bei Zufallsgeneratoren

Festlegen von Seeds(Pseudo-Random)Festlegen von Seeds(Pseudo-Random)

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 32

Foto von chrisli8020: https://pixabay.com/de/auto-maschine-spielzeug-786315/ (CC0 Public Domain Lizenz)

Subclass To TestSubclass To Test2

Page 17: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

17

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 33

Subclass To TestSubclass To Test2

Seam (Nahtstelle)Ein Seam ist eine Stelle, an der man das Verhalten editieren kann, ohne direkt an dieser Stelle zu ändern.

Aufbrechen stark gekoppelter Abhängigkeiten aka Extract and Override

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 34

Foto von StockSnap: https://pixabay.com/de/codierung-gesch%C3%A4ft-arbeiten-macbook-699318/ (CC0 Public Domain Lizenz)

Live-CodingLive-Coding

Page 18: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

18

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 35

Foto von PublicDomainPictures: https://pixabay.com/de/wasser-tropfen-tr%C3%B6pfchen-grau-72879/ (CC0 Public Domain Lizenz)

3 Extract Pure FunctionsExtract Pure Functions

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 36

"It's a classic, we call it a Klassiker"

3 Extract Pure FunctionsExtract Pure Functions

seiteneffektfrei

keine Statusänderung

Page 19: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

19

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 37

3 Extract Pure FunctionsExtract Pure Functions

"pure function".substring(5);

UrlEncoder.encode("pure function");

Math.max(x, y);

System.out.println("unpure");

list.add(3);

Collections.sort(list);

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 38

3 Extract Pure FunctionsExtract Pure Functions

ZieleZiele

Codestellen isolierenCodestellen isolieren

Separat testbarSeparat testbar

Duplikation reduzierenDuplikation reduzieren

Page 20: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

20

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 39

Foto von StockSnap: https://pixabay.com/de/codierung-gesch%C3%A4ft-arbeiten-macbook-699318/ (CC0 Public Domain Lizenz)

Live-CodingLive-Coding

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 40

Foto von AdinaVoicu: https://pixabay.com/de/zwilling-schwestern-liebe-m%C3%A4dchen-948713/ (CC0 Public Domain Lizenz)

Remove DuplicationRemove Duplication4

Don't Repeat YourselfDon't Repeat Yourself

Beachte: Rule of ThreeBeachte: Rule of Three

Page 21: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

21

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 41

Foto von StockSnap: https://pixabay.com/de/codierung-gesch%C3%A4ft-arbeiten-macbook-699318/ (CC0 Public Domain Lizenz)

Live-CodingLive-Coding

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 42

Foto von blickpixel: https://pixabay.com/de/weihnachtsdekoration-pakete-geschenk-570797/ (CC0 Public Domain Lizenz)

Extract ClassExtract Class5

Large classLarge class

SRP verletztSRP verletzt

Unabhängiges Testen einzelner TeileUnabhängiges Testen einzelner Teile

ZieleZiele

Sauberes OO-DesignSauberes OO-Design

Page 22: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

22

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 43

Foto von StockSnap: https://pixabay.com/de/codierung-gesch%C3%A4ft-arbeiten-macbook-699318/ (CC0 Public Domain Lizenz)

Live-CodingLive-Coding

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 44

Dependency InversionDependency Inversion6 Dependency InversionDependency Inversion

Dependency InversionDependency InversionTest non-public memberTest non-public member7

Dependency InversionDependency Inversion8 Mocking FrameworkMocking Framework

Page 23: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

23

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 45

Zusammenfassung

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 46

Golden MasterGolden Master

Subclass To TestSubclass To Test

Extract Pure FunctionsExtract Pure Functions

Remove DuplicationRemove Duplication

Extract ClassExtract Class

Dependency InversionDependency Inversion6

5

4

3

2

1

Test non-public memberTest non-public member7

Mocking FrameworkMocking Framework8

Page 24: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

24

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 47

Golden MasterGolden Master1

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 48

Subclass To TestSubclass To Test

Extract Pure FunctionsExtract Pure Functions

Extract ClassExtract Class

Dependency InversionDependency Inversion6

5

3

2

Test non-public memberTest non-public member7

Mocking FrameworkMocking Framework8

Page 25: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

25

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 49

Extract Pure FunctionsExtract Pure Functions

Remove DuplicationRemove Duplication

Extract ClassExtract Class5

4

3

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH

Tools

50

Code CoverageCode Coverage

Approval TestsApproval Tests

InfinitestInfinitest

Eclipse MetricsEclipse Metrics

Page 26: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

26

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 51

Legacy Code Retreat

Foto von Jmabel: https://commons.wikimedia.org/wiki/File:Seattle_-_Budokan_Dojo_judo_demo_04.jpg?uselang=de (CC BY-SA 3.0 Lizenz)

https://github.com/jbrains/trivia

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH

Links

• Code-Beispiel der Live-Demo– https://github.com/sippsack/BadTelefon-Refactoring-Legacy-Code

• anderes Code-Beispiel für Legacy Code– https://github.com/jbrains/trivia

• Blog: Techniken zu Legacy Code-Retreat– http://blog.adrianbolboaca.ro/2014/04/legacy-coderetreat/

52

Page 27: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

27

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH

Literaturhinweise

53

• Refactoring– Sprache: Englisch

Gebunden - 464 Seiten - Addison WeselyErscheinungsdatum: 1. Juni 1999ISBN: 0201485672

• Working Effectively with Legacy Code– Sprache: Englisch– Gebunden

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]

??

? ?

????

Fragen ?

Page 28: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

28

Orientation in Objects GmbH

Weinheimer Str. 6868309 Mannheim

[email protected]

Vielen Dank für ihre Aufmerksamkeit !

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH

Zusatzmaterial

56

Dependency InversionDependency Inversion6 Dependency InversionDependency Inversion

Dependency InversionDependency InversionTest non-public memberTest non-public member7

Dependency InversionDependency Inversion8 Mocking FrameworkMocking Framework

Page 29: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

29

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 57

Foto von tatlin: https://pixabay.com/de/zigarette-rauch-tabak-106610/ (CC0 Public Domain Lizenz)

6

Entkoppelndurch explizitesSetzen der Abhängigkeiten

Entkoppelndurch explizitesSetzen der Abhängigkeiten

Dependency InversionDependency Inversion

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 58

Foto von StockSnap: https://pixabay.com/de/codierung-gesch%C3%A4ft-arbeiten-macbook-699318/ (CC0 Public Domain Lizenz)

Live-CodingLive-Coding

Page 30: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

30

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 59

Foto von Guian Bolisay: https://www.flickr.com/photos/instantvantage/5151841152/ (CC BY-SA 2.0)

7

Wirklich?Wirklich?

Test non-public memberTest non-public member

Gute Alternative bei Legacy Code!Gute Alternative bei Legacy Code!

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 60

Foto von StockSnap: https://pixabay.com/de/codierung-gesch%C3%A4ft-arbeiten-macbook-699318/ (CC0 Public Domain Lizenz)

Live-CodingLive-Coding

Page 31: Legacy Code meistern in x einfachen Schritten · Refactoring Legacy Code Code Smells Temporary Field Long Method Feature Envy

31

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 61

Foto von tatlin: https://pixabay.com/de/zigarette-rauch-tabak-106610/ (CC0 Public Domain Lizenz)

8

Subclass To Test on Steorids! Subclass To Test on Steorids!

MockingMocking

Interaktion mitUmgebung testenInteraktion mitUmgebung testen

Erwartete Parameter und AufrufreihenfolgeErwartete Parameter und Aufrufreihenfolge

Legacy Code meistern in x einfachen Schritten© 2016 Orientation in Objects GmbH 62

Foto von StockSnap: https://pixabay.com/de/codierung-gesch%C3%A4ft-arbeiten-macbook-699318/ (CC0 Public Domain Lizenz)

Live-CodingLive-Coding