41
PHP 犖磪 Day #25 TDD 夺籗牏翑籗牏᯿䯤窕纷 槼犝犝@Բ狝夺䌌Ꭺ dj1020(at)gmail.com

PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

  • Upload
    -

  • View
    1.252

  • Download
    1

Embed Size (px)

Citation preview

Page 1: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

PHP Day #25

TDD

@ dj1020(at)gmail.com

Page 2: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

• KKBOX

• Laradiner

• http://blog.dj1020.net • dj1020(at)gmail.com

Page 3: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

TDD

✦ (Spec)

✦ (RED) -> (GREEN) -> (REFACTOR)

Page 4: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮
Page 5: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

TDD ✦

✦ API

✦ debug

✦ Procedural Programming OOP

Page 6: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Kata ✦

Code

✦ TDD Kata TDD

Page 7: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Kata

Kata http://www.codingdojo.org/cgi-bin/index.pl?KataCatalogue

Page 8: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Kata ✦ ( )

✦ ()

✦ TDD

✦ Editor

Page 9: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Bowling Kata

✦ 10

10

Page 10: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Bowling

✦ 10 Strike 10

✦ 10 Spare10

✦ Strike Spare

Page 11: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Bowling Kata

✦ BowlingGame Class methods

1. score()

2. roll($pins)

Page 12: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Let’s Do It

Page 13: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

TDD $ git init BowlingKata

$ cd BowlingKata

$ composer init

$ composer require phpspec/phpspec

$ ./vendor/bin/phpspec desc Twk/BowlingGame

$ ./vendor/bin/phpspec run

Page 14: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

First TestRED

Page 15: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Autoload composer.json

{ "require": { "phpspec/phpspec": "^2.5" }, "autoload" : { "psr-4" : { “Twk\\" : "src/Twk" } } }

$ composer dump

Page 16: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

First TestGREEN

Page 17: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 1RED

20

Page 18: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 1REDGREEN

20

Page 19: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 2RED 1 20

Page 20: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 2REDGREEN 1 20

Page 21: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 2REDREFACTOR

DRY Extract Method

Page 22: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 2REDREFACTOR

design

Page 23: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 3RED

2, 8 Spare 2 10 + 2(bonus) + 2 = 14

Page 24: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 3REDGREEN

2, 8 Spare 2 10 + 2(bonus) + 2 = 14

Page 25: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 4RED

2, 8 Spare 2, 5 10 + 2(bonus) + 7 = 19

Page 26: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Oh Oh …(design flaw)

Page 27: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

TDD ✦

Test Case

Page 28: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 3RED

2, 8 Spare 2 10 + 2(bonus) + 2 = 14

Page 29: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 3REDGREEN

2, 8 Spare 2 10 + 2(bonus) + 2 = 14

Page 30: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 4REDGREEN

2, 8 Spare 2, 5 10 + 2(bonus) + 7 = 19

Page 31: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 4REDGREEN

Consolidate Duplicate Conditional Fragments

REFACTOR

Page 32: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 4REDGREEN

Rename Variables

REFACTOR

Page 33: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 4REDGREEN

Decompose Conditional Extract Method

REFACTOR

Page 34: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 4REDGREEN

Extract rollSpace() method

REFACTOR

Page 35: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 5RED

(Strike) 3, 4

10 + 3(bonus) + 4(bonus) + 7 = 24

Page 36: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 5RED

(Strike) 3, 4

10 + 3(bonus) + 4(bonus) + 7 = 24

GREEN

Page 37: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 5RED

Extract isStrike() method Extract rollStrike() method Extract spareBonus() method …

GREENREFACTOR

Page 38: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 6RED

Perfect Game! 12 300

GREEN

Page 39: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 7RED

9 Spare 5

… 267

GREEN

Page 40: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Test Case 8 …

Test Case

^o^

Page 41: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮

Q&A ?