refactoring (tdd mini serie) haarlem software developer meetup
TRANSCRIPT
![Page 1: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/1.jpg)
Confidential Page 1
KvK 53479335
Lichtfabriekplein 1, 2031 TE Haarlem
P.O. Box 2031 , 2002 CA Haarlem
+31 (0)88 248 1632, [email protected]
www.ximedes.com
Meetup Sponsor:
![Page 2: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/2.jpg)
Test Driven DevelopmentRefactor Safely
Haarlem Software Developer Meetup@mcbeelen
![Page 3: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/3.jpg)
01-10-2015 Confidential Page 3
![Page 4: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/4.jpg)
01-10-2015 Confidential Page 4
Refactoring is a controlled technique for improving the design of an existing code base
Its essence is applyinga series of
small behavior-preserving transformations
![Page 5: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/5.jpg)
01-10-2015 Confidential Page 5
![Page 6: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/6.jpg)
01-10-2015 Confidential Page 6
![Page 7: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/7.jpg)
01-10-2015 Confidential Page 7http://pitest.org/
![Page 8: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/8.jpg)
01-10-2015 Confidential Page 8
![Page 9: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/9.jpg)
01-10-2015 Confidential Page 9
BloatersLong methods, Many primitive fields, Complex conditionals
Object-Orientation AbusersSwitch-statements, Temporary Fields
Change PreventersBad names, Magic Numbers, Solution Sprawl
CouplersTrain wrecks, Feature Envy
DispensablesComments, Duplicate Code, Dead code
![Page 10: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/10.jpg)
01-10-2015 Confidential Page 10
Rename Field Rename MethodExtract MethodInline Method
Move Field Move Method
Introduce Parameter ObjectmakeAlive(x, y) makeAlive(coordinate)
Extract Class
Extract Interface
![Page 11: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/11.jpg)
01-10-2015 Confidential Page 11
Replace Conditional with Polymorphism
if (cell.isAlive()) {// handleAlive
} else {// handleDead
}
AliveCell.evolve() DeadCell. evolve()
![Page 12: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/12.jpg)
01-10-2015 Confidential Page 12
Decompose Conditional
if (income > 25000 && dept < 1000) {maxLoan = income * largeFactor;newLoad = maxLoad – debt;return newLoad * normalPercentage
} else {maxLoan = income * smallFactor;newLoad = maxLoad – debt;return newLoad * highPercentage
}
if (isCreditWorthy()) {calculateOptimistic()
} else {calculatePessimistic()
}
![Page 13: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/13.jpg)
01-10-2015 Confidential Page 13
![Page 14: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/14.jpg)
01-10-2015 Confidential Page 14
![Page 15: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/15.jpg)
01-10-2015 Confidential Page 15
![Page 16: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/16.jpg)
01-10-2015 Confidential Page 16
![Page 17: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/17.jpg)
01-10-2015 Confidential Page 17
1. You are here to LEARN. (and have fun)
2. Try to do your best.
3. Work in pairs.Find a partner in a similar programming language and operating system
![Page 18: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/18.jpg)
01-10-2015 Confidential Page 18
![Page 19: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/19.jpg)
01-10-2015 Confidential Page 19
Preparation for the kata’s:Git clone:https://github.com/emilybache/
Tennis-Refactoring-Kata
![Page 20: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/20.jpg)
01-10-2015 Confidential Page 20
https://martinfowler.com/articles/workflowsOfRefactoring/
https://refactoring.guru/
https://sourcemaking.com/refactoring
References
![Page 21: Refactoring (TDD Mini Serie) Haarlem Software Developer Meetup](https://reader035.vdocument.in/reader035/viewer/2022081520/58d1343f1a28abe3298b6155/html5/thumbnails/21.jpg)
Thanks for your attendance!
Global Day of Code Retreat: 18 November
Haarlem Software Developer Meetup