Download - Test, transform, refactor

Transcript
Page 1: Test, transform, refactor

by @_mdPHPUK 2014

Test, Transform,

Refactor

TEST,

REFACTOR

Test, Transform,

Refactor

Test, Transform,

Refactor

Test, Transform,Refactor

TRANSFORM,

Page 2: Test, transform, refactor

@_md Marcello Duarte

Lead developer

Head of Training Kata sensei

Learning

Page 3: Test, transform, refactor

@_md Marcello Duarte

Lead developer

Head of Training

Page 4: Test, transform, refactor

Kata

formmovementpracticedeliberate

Page 5: Test, transform, refactor

Kata

20 minutesthrow away

TDDrefactor

Page 6: Test, transform, refactor

Test

CodeRefactor

Page 7: Test, transform, refactor

3Rules

no code without test

enough to go red

enough to go greenTDD

Page 8: Test, transform, refactor

no code without test

enough to go red

enough to go green

Test

Code

Page 9: Test, transform, refactor

4Rules

tests run and passdryremove opacitySimple Design

simplify

Refactor

Page 10: Test, transform, refactor

The Roman Numerals Kata

Page 11: Test, transform, refactor

Converting arabic numbers into their roman equivalent

!

e.g. 2149 => MMCXLIX

Page 12: Test, transform, refactor

Test

Code

Refactor

Make it red

Make it green

Make it right

Page 13: Test, transform, refactor

The Roman Numerals Kata gone wrong demo

Page 14: Test, transform, refactor

Introducing TPP

Page 15: Test, transform, refactor

Test

Transform

Refactor

Make it more specific

Make it more generic

Put on the design hat

Page 16: Test, transform, refactor

Transformations (just the most basic ones)

null to constantconstant to constant+constant to scalarstatement to statementsunconditional to ifif to while

Page 17: Test, transform, refactor

Jim Weirich’s Roman Numeral Kata*

http://www.flickr.com/photos/jorendegroof/4471189540/

* in PHP

Page 18: Test, transform, refactor
Page 19: Test, transform, refactor
Page 20: Test, transform, refactor

Walking skeleton

[Cockburn 94]

Page 21: Test, transform, refactor
Page 22: Test, transform, refactor
Page 23: Test, transform, refactor
Page 24: Test, transform, refactor

Transformation null -> constant

Transformation null -> constant

Page 25: Test, transform, refactor
Page 26: Test, transform, refactor
Page 27: Test, transform, refactor
Page 28: Test, transform, refactor
Page 29: Test, transform, refactor
Page 30: Test, transform, refactor

Transformation unconditional -> if

Transformation unconditional -> if

Page 31: Test, transform, refactor
Page 32: Test, transform, refactor
Page 33: Test, transform, refactor
Page 34: Test, transform, refactor
Page 35: Test, transform, refactor

Transformation statement -> statements

Transformation statement -> statements

Page 36: Test, transform, refactor
Page 37: Test, transform, refactor
Page 38: Test, transform, refactor
Page 39: Test, transform, refactor
Page 40: Test, transform, refactor

Transformation unconditional -> if

Transformation unconditional -> if

Page 41: Test, transform, refactor
Page 42: Test, transform, refactor
Page 43: Test, transform, refactor
Page 44: Test, transform, refactor
Page 45: Test, transform, refactor

Refactor time?

Page 46: Test, transform, refactor
Page 47: Test, transform, refactor
Page 48: Test, transform, refactor
Page 49: Test, transform, refactor
Page 50: Test, transform, refactor
Page 51: Test, transform, refactor
Page 52: Test, transform, refactor
Page 53: Test, transform, refactor
Page 54: Test, transform, refactor
Page 55: Test, transform, refactor
Page 56: Test, transform, refactor
Page 57: Test, transform, refactor
Page 58: Test, transform, refactor
Page 59: Test, transform, refactor
Page 60: Test, transform, refactor

Transformation if -> while

Transformation if -> while

Page 61: Test, transform, refactor

Condition to loop transformation !

is a great indicator you are in the right track of solving the algorithm

[Martin 13]

Page 62: Test, transform, refactor
Page 63: Test, transform, refactor
Page 64: Test, transform, refactor
Page 65: Test, transform, refactor
Page 66: Test, transform, refactor
Page 67: Test, transform, refactor
Page 68: Test, transform, refactor
Page 69: Test, transform, refactor
Page 70: Test, transform, refactor
Page 71: Test, transform, refactor
Page 72: Test, transform, refactor
Page 73: Test, transform, refactor
Page 74: Test, transform, refactor
Page 75: Test, transform, refactor
Page 76: Test, transform, refactor
Page 77: Test, transform, refactor
Page 78: Test, transform, refactor
Page 79: Test, transform, refactor

Katas and Learning

Page 80: Test, transform, refactor

Kata Deliberate Practice

Koan Deliberate Learning

• Optimising for performance • Minimising variance

• Optimising for discovery • Maximising variance

[North 12]

Page 81: Test, transform, refactor

Learning TDD is learning all that TDD does for you

Page 82: Test, transform, refactor

“The beauty of a move lies not in its' appearance but in the thought behind it.”

Page 83: Test, transform, refactor

My Systemelements of chess

positional play

illustrative games

Page 84: Test, transform, refactor

First learn the elements of design Then learn how to drive it with test

Page 85: Test, transform, refactor

we are hiring try phpspec!

follow @_md

Marcello Duarte

Page 86: Test, transform, refactor

inviqa.com/tdd-immersion-day/

Page 87: Test, transform, refactor

Thank you !

Page 88: Test, transform, refactor

Questions or Comments?

want to learn more? inviqa.com/tdd-immersion-day/

@_mdjoind.in/10711