KEMBAR78
Coding Dojo: Adding Tests to Legacy Code (2014) | PDF
Coding Dojo:
Adding Tests to the
Ugly Trivia Legacy Code
Feb. 2014
Peter Kofler, ‘Code Cop’
@codecopkofler
www.code-cop.org
Copyright Peter Kofler, licensed under CC-BY.
Peter Kofler
• Ph.D. (Appl. Math.)
• Professional Software
Developer for 14 years
• “fanatic about code quality”
• I help development teams
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Expectations?
Coding Dojo Mindset
●
Safe place outside
work
●
We are here to learn
●
Need to slow down
●
Focus on doing it right
●
Collaborative Game
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Dojo Structure
●
Introduction 15'
●
Coding 60'
●
Break
●
Interim (Retrospective) 15'
●
Coding 60'
●
Break
●
Coding 60'
●
Retrospective 30'
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Legacy Code Skills
●
Understanding Legacy Code
●
Breaking Dependencies
●
Bringing Code Under Test 
●
Refactoring Mercilessly
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Ugly Trivia
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Legacy Codebase “uglytrivia“
●
Get the code
https://github.com/jbrains/trivia
●
An implementation of Trivial Pursuit
●
http://en.wikipedia.org/wiki/Trivial_Pursuit
●
players take turns to answer trivia questions
●
questions are split into categories
●
players collect coins for right answers
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Requirements
●
Choose a testing framework
●
Create tests, cover all cases
●
May need to extract code to do that
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Don't Focus on
Getting it Done.
F0cus on Doing
It Perfectly.
→Practice
Extract Pure Functions
●
find a piece of code that can be moved
into a separate function by using
“Extract Method“
●
replace all external dependencies within
this function with independent
parameters
●
add a test for that function
●
refactor the tested code as needed
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Extract Class
●
isolate functionality that somehow
relates and can be separated from other
behaviour
●
turn isolated methods into pure
functions
●
extract these pure functions into a
separate class
●
add tests for that new class
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Closing Circle
●
What did you learn today?
●
What surprised you today?
●
What will you do
differently in the
future?
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Peter Kofler
@codecopkofler
www.code-cop.org
Idea by
J.B.Rainsberger
@jbrains
https://github.com/jbrains/trivia
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
CC Images
●
Dojo http://www.flickr.com/photos/49715404@N00/3267627038/
●
Todos http://www.flickr.com/photos/kylesteeddesign/3724074594/
●
Trivia http://www.flickr.com/photos/thehoneybunny/207992667/
●
Wants you http://www.flickr.com/photos/shutter/105497713/
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

Coding Dojo: Adding Tests to Legacy Code (2014)

  • 1.
    Coding Dojo: Adding Teststo the Ugly Trivia Legacy Code Feb. 2014 Peter Kofler, ‘Code Cop’ @codecopkofler www.code-cop.org Copyright Peter Kofler, licensed under CC-BY.
  • 2.
    Peter Kofler • Ph.D.(Appl. Math.) • Professional Software Developer for 14 years • “fanatic about code quality” • I help development teams PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 3.
  • 4.
    Coding Dojo Mindset ● Safeplace outside work ● We are here to learn ● Need to slow down ● Focus on doing it right ● Collaborative Game PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 5.
    Dojo Structure ● Introduction 15' ● Coding60' ● Break ● Interim (Retrospective) 15' ● Coding 60' ● Break ● Coding 60' ● Retrospective 30' PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 6.
    Legacy Code Skills ● UnderstandingLegacy Code ● Breaking Dependencies ● Bringing Code Under Test  ● Refactoring Mercilessly PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 7.
    Ugly Trivia PETER KOFLER,CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 8.
    Legacy Codebase “uglytrivia“ ● Getthe code https://github.com/jbrains/trivia ● An implementation of Trivial Pursuit ● http://en.wikipedia.org/wiki/Trivial_Pursuit ● players take turns to answer trivia questions ● questions are split into categories ● players collect coins for right answers PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 9.
    Requirements ● Choose a testingframework ● Create tests, cover all cases ● May need to extract code to do that PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 10.
    Don't Focus on Gettingit Done. F0cus on Doing It Perfectly.
  • 11.
  • 12.
    Extract Pure Functions ● finda piece of code that can be moved into a separate function by using “Extract Method“ ● replace all external dependencies within this function with independent parameters ● add a test for that function ● refactor the tested code as needed PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 13.
    Extract Class ● isolate functionalitythat somehow relates and can be separated from other behaviour ● turn isolated methods into pure functions ● extract these pure functions into a separate class ● add tests for that new class PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 14.
    Closing Circle ● What didyou learn today? ● What surprised you today? ● What will you do differently in the future? PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  • 15.
  • 16.
    CC Images ● Dojo http://www.flickr.com/photos/49715404@N00/3267627038/ ● Todoshttp://www.flickr.com/photos/kylesteeddesign/3724074594/ ● Trivia http://www.flickr.com/photos/thehoneybunny/207992667/ ● Wants you http://www.flickr.com/photos/shutter/105497713/ PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY