16
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.

Coding Dojo: Adding Tests to Legacy Code (2014)

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Coding Dojo: Adding Tests to Legacy Code (2014)

Coding Dojo:Adding Tests to the

Ugly Trivia Legacy CodeFeb. 2014

Peter Kofler, ‘Code Cop’@codecopkofler

www.code-cop.orgCopyright Peter Kofler, licensed under CC-BY.

Page 2: Coding Dojo: Adding Tests to Legacy Code (2014)

Peter Kofler

• Ph.D. (Appl. Math.)

• Professional SoftwareDeveloper for 14 years

• “fanatic about code quality”

• I help development teams

PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

Page 3: Coding Dojo: Adding Tests to Legacy Code (2014)

Expectations?

Page 4: Coding Dojo: Adding Tests to Legacy Code (2014)

Coding Dojo Mindset

● Safe place outsidework

● 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

Page 5: Coding Dojo: Adding Tests to Legacy Code (2014)

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

Page 6: Coding Dojo: Adding Tests to Legacy Code (2014)

Legacy Code Skills

● Understanding Legacy Code● Breaking Dependencies● Bringing Code Under Test ● Refactoring Mercilessly

PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

Page 7: Coding Dojo: Adding Tests to Legacy Code (2014)

Ugly Trivia

PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

Page 8: Coding Dojo: Adding Tests to Legacy Code (2014)

Legacy Codebase “uglytrivia“

● Get the codehttps://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

Page 9: Coding Dojo: Adding Tests to Legacy Code (2014)

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

Page 10: Coding Dojo: Adding Tests to Legacy Code (2014)

Don't Focus on Getting it Done.F0cus on Doing

It Perfectly.

Page 11: Coding Dojo: Adding Tests to Legacy Code (2014)

→Practice

Page 12: Coding Dojo: Adding Tests to Legacy Code (2014)

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

Page 13: Coding Dojo: Adding Tests to Legacy Code (2014)

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

Page 14: Coding Dojo: Adding Tests to Legacy Code (2014)

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

Page 15: Coding Dojo: Adding Tests to Legacy Code (2014)

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

Page 16: Coding Dojo: Adding Tests to Legacy Code (2014)

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