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