phpspec tdd 紅燈-綠燈-重構流程-php也有day#25_by_閃亮亮
TRANSCRIPT
![Page 2: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/2.jpg)
•
• KKBOX
• Laradiner
• http://blog.dj1020.net • dj1020(at)gmail.com
![Page 3: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/3.jpg)
TDD
✦
✦
✦ (Spec)
✦ (RED) -> (GREEN) -> (REFACTOR)
![Page 4: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/4.jpg)
![Page 5: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/5.jpg)
TDD ✦
✦ API
✦ debug
✦
✦ Procedural Programming OOP
![Page 6: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/6.jpg)
Kata ✦
✦
Code
✦
✦ TDD Kata TDD
![Page 7: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/7.jpg)
Kata
Kata http://www.codingdojo.org/cgi-bin/index.pl?KataCatalogue
![Page 8: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/8.jpg)
Kata ✦ ( )
✦
✦ ()
✦ TDD
✦ Editor
✦
![Page 9: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/9.jpg)
Bowling Kata
✦ 10
10
![Page 10: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/10.jpg)
Bowling
✦ 10 Strike 10
✦ 10 Spare10
✦ Strike Spare
![Page 11: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/11.jpg)
Bowling Kata
✦
✦ BowlingGame Class methods
1. score()
2. roll($pins)
![Page 12: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/12.jpg)
Let’s Do It
![Page 13: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/13.jpg)
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_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/14.jpg)
First TestRED
![Page 15: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/15.jpg)
Autoload composer.json
{ "require": { "phpspec/phpspec": "^2.5" }, "autoload" : { "psr-4" : { “Twk\\" : "src/Twk" } } }
$ composer dump
![Page 16: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/16.jpg)
First TestGREEN
![Page 17: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/17.jpg)
Test Case 1RED
20
![Page 18: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/18.jpg)
Test Case 1REDGREEN
20
![Page 19: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/19.jpg)
Test Case 2RED 1 20
![Page 20: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/20.jpg)
Test Case 2REDGREEN 1 20
![Page 21: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/21.jpg)
Test Case 2REDREFACTOR
DRY Extract Method
![Page 22: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/22.jpg)
Test Case 2REDREFACTOR
design
![Page 23: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/23.jpg)
Test Case 3RED
2, 8 Spare 2 10 + 2(bonus) + 2 = 14
![Page 24: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/24.jpg)
Test Case 3REDGREEN
2, 8 Spare 2 10 + 2(bonus) + 2 = 14
![Page 25: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/25.jpg)
Test Case 4RED
2, 8 Spare 2, 5 10 + 2(bonus) + 7 = 19
![Page 26: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/26.jpg)
Oh Oh …(design flaw)
![Page 27: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/27.jpg)
TDD ✦
✦
✦
✦
Test Case
![Page 28: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/28.jpg)
Test Case 3RED
2, 8 Spare 2 10 + 2(bonus) + 2 = 14
![Page 29: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/29.jpg)
Test Case 3REDGREEN
2, 8 Spare 2 10 + 2(bonus) + 2 = 14
![Page 30: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/30.jpg)
Test Case 4REDGREEN
2, 8 Spare 2, 5 10 + 2(bonus) + 7 = 19
![Page 31: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/31.jpg)
Test Case 4REDGREEN
Consolidate Duplicate Conditional Fragments
REFACTOR
![Page 32: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/32.jpg)
Test Case 4REDGREEN
Rename Variables
REFACTOR
![Page 33: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/33.jpg)
Test Case 4REDGREEN
Decompose Conditional Extract Method
REFACTOR
![Page 34: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/34.jpg)
Test Case 4REDGREEN
Extract rollSpace() method
REFACTOR
![Page 35: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/35.jpg)
Test Case 5RED
(Strike) 3, 4
10 + 3(bonus) + 4(bonus) + 7 = 24
![Page 36: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/36.jpg)
Test Case 5RED
(Strike) 3, 4
10 + 3(bonus) + 4(bonus) + 7 = 24
GREEN
![Page 37: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/37.jpg)
Test Case 5RED
Extract isStrike() method Extract rollStrike() method Extract spareBonus() method …
GREENREFACTOR
![Page 38: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/38.jpg)
Test Case 6RED
Perfect Game! 12 300
GREEN
![Page 39: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/39.jpg)
Test Case 7RED
9 Spare 5
… 267
GREEN
![Page 40: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/40.jpg)
Test Case 8 …
Test Case
^o^
![Page 41: PhpSpec TDD 紅燈-綠燈-重構流程-PHP也有day#25_by_閃亮亮](https://reader031.vdocuments.mx/reader031/viewer/2022021416/587563c01a28abd80a8b4a1f/html5/thumbnails/41.jpg)
Q&A ?