victor chircu - silviu eigel - clean legacy code - codecamp 10 may 2014
DESCRIPTION
Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014TRANSCRIPT
![Page 1: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014](https://reader036.vdocuments.site/reader036/viewer/2022081413/5479e679b37959582b8b4892/html5/thumbnails/1.jpg)
![Page 2: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014](https://reader036.vdocuments.site/reader036/viewer/2022081413/5479e679b37959582b8b4892/html5/thumbnails/2.jpg)
Clean Legacy CodeVictor Chircu @YonderSilviu Eigel @Ness
10th of May 2014
![Page 3: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014](https://reader036.vdocuments.site/reader036/viewer/2022081413/5479e679b37959582b8b4892/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081413/5479e679b37959582b8b4892/html5/thumbnails/4.jpg)
Legacy Code
“Code without tests” Michael Feathers
![Page 5: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014](https://reader036.vdocuments.site/reader036/viewer/2022081413/5479e679b37959582b8b4892/html5/thumbnails/5.jpg)
So What?
![Page 6: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014](https://reader036.vdocuments.site/reader036/viewer/2022081413/5479e679b37959582b8b4892/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081413/5479e679b37959582b8b4892/html5/thumbnails/7.jpg)
Refactoring
Refactoring requires unit testsEspecially refactoring legacy code
![Page 8: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014](https://reader036.vdocuments.site/reader036/viewer/2022081413/5479e679b37959582b8b4892/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081413/5479e679b37959582b8b4892/html5/thumbnails/10.jpg)
![Page 11: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014](https://reader036.vdocuments.site/reader036/viewer/2022081413/5479e679b37959582b8b4892/html5/thumbnails/11.jpg)
Demo
![Page 12: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014](https://reader036.vdocuments.site/reader036/viewer/2022081413/5479e679b37959582b8b4892/html5/thumbnails/12.jpg)
Cleaning Legacy Code
![Page 13: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014](https://reader036.vdocuments.site/reader036/viewer/2022081413/5479e679b37959582b8b4892/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081413/5479e679b37959582b8b4892/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081413/5479e679b37959582b8b4892/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081413/5479e679b37959582b8b4892/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081413/5479e679b37959582b8b4892/html5/thumbnails/17.jpg)
Q&A
![Page 18: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014](https://reader036.vdocuments.site/reader036/viewer/2022081413/5479e679b37959582b8b4892/html5/thumbnails/18.jpg)
![Page 19: Victor Chircu - Silviu Eigel - Clean Legacy Code - CodeCamp 10 may 2014](https://reader036.vdocuments.site/reader036/viewer/2022081413/5479e679b37959582b8b4892/html5/thumbnails/19.jpg)
Clean Legacy Code
Victor Chircu @YonderSilviu Eigel @Ness
10th of May 2014
Please fill in your evaluation form