Download - PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮
•
• KKBOX
• Laradiner
• http://blog.dj1020.net • dj1020(at)gmail.com
TDD
✦
✦
✦ (Spec)
✦ (RED) -> (GREEN) -> (REFACTOR)
TDD ✦
✦ API
✦ debug
✦
✦ Procedural Programming OOP
Kata ✦
✦
Code
✦
✦ TDD Kata TDD
Kata
Kata http://www.codingdojo.org/cgi-bin/index.pl?KataCatalogue
Kata ✦ ( )
✦
✦ ()
✦ TDD
✦ Editor
✦
Bowling Kata
✦ 10
10
Bowling
✦ 10 Strike 10
✦ 10 Spare10
✦ Strike Spare
Bowling Kata
✦
✦ BowlingGame Class methods
1. score()
2. roll($pins)
Let’s Do It
TDD $ git init BowlingKata
$ cd BowlingKata
$ composer init
$ composer require phpspec/phpspec
$ ./vendor/bin/phpspec desc Twk/BowlingGame
$ ./vendor/bin/phpspec run
First TestRED
Autoload composer.json
{ "require": { "phpspec/phpspec": "^2.5" }, "autoload" : { "psr-4" : { “Twk\\" : "src/Twk" } } }
$ composer dump
First TestGREEN
Test Case 1RED
20
Test Case 1REDGREEN
20
Test Case 2RED 1 20
Test Case 2REDGREEN 1 20
Test Case 2REDREFACTOR
DRY Extract Method
Test Case 2REDREFACTOR
design
Test Case 3RED
2, 8 Spare 2 10 + 2(bonus) + 2 = 14
Test Case 3REDGREEN
2, 8 Spare 2 10 + 2(bonus) + 2 = 14
Test Case 4RED
2, 8 Spare 2, 5 10 + 2(bonus) + 7 = 19
Oh Oh …(design flaw)
TDD ✦
✦
✦
✦
Test Case
Test Case 3RED
2, 8 Spare 2 10 + 2(bonus) + 2 = 14
Test Case 3REDGREEN
2, 8 Spare 2 10 + 2(bonus) + 2 = 14
Test Case 4REDGREEN
2, 8 Spare 2, 5 10 + 2(bonus) + 7 = 19
Test Case 4REDGREEN
Consolidate Duplicate Conditional Fragments
REFACTOR
Test Case 4REDGREEN
Rename Variables
REFACTOR
Test Case 4REDGREEN
Decompose Conditional Extract Method
REFACTOR
Test Case 4REDGREEN
Extract rollSpace() method
REFACTOR
Test Case 5RED
(Strike) 3, 4
10 + 3(bonus) + 4(bonus) + 7 = 24
Test Case 5RED
(Strike) 3, 4
10 + 3(bonus) + 4(bonus) + 7 = 24
GREEN
Test Case 5RED
Extract isStrike() method Extract rollStrike() method Extract spareBonus() method …
GREENREFACTOR
Test Case 6RED
Perfect Game! 12 300
GREEN
Test Case 7RED
9 Spare 5
… 267
GREEN
Test Case 8 …
Test Case
^o^
Q&A ?