Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014

19

description

Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014

Transcript of Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014

Page 1: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014
Page 2: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014

Clean Legacy CodeVictor Chircu @YonderSilviu Eigel @Ness

10th of May 2014

Page 3: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014

Legacy Code

“Source code inherited from someone else and source code inherited from an older version of the software”

Wikipedia

Page 4: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014

Legacy Code

“Code without tests” Michael Feathers

Page 5: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014

So What?

Page 6: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014

Refactoring

“A controlled technique for improving the design of an existing code base, without changing external behavior”

Martin Fowler

Page 7: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014

Refactoring

Refactoring requires unit testsEspecially refactoring legacy code

Page 8: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014

Daily Standup

Yesterday I’ve…Today I’ll fix a bug inside BookOverview page

Nothing is blocking me

Page 10: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014
Page 11: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014

Demo

Page 12: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014

Cleaning Legacy Code

Page 13: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014

Cleaning Legacy Code Algorithm

1. Identify change points.2. Find test points.3. Break dependencies.4. Write tests.5. Make changes and refactor.

Page 14: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014

Dependency Breaking Techniques

Extract method under testParameterize methodBreak encapsulationExtract and override callSubclass and override method

Page 15: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014

Refactorings

Extract Method, Inline Method, Inline Temp, Move Method, Extract Class, Self Encapsulate Field, Consolidate Duplicate Conditional Fragments, Replace Nested Conditional With Guard Clauses, Invert Conditional, Replace If With Switch, Rename Method, Change Signature, Add Parameter, Remove Parameter, Separate Query From Modifier, Pull Up Field, Pull Up Method, Extract Interface, Replace Constructor With Factory Method

Page 16: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014

Our Legacy

Github Repo: http://tinyurl.com/CleanLegacyCode

Stay tuned: iasidevelopers.net

Page 17: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014

Q&A

Page 18: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014
Page 19: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014

Clean Legacy Code

Victor Chircu @YonderSilviu Eigel @Ness

10th of May 2014

Please fill in your evaluation form