Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
テスト駆動開発 輪読会 vol.2 / TDD Reading Session
Search
makasn
July 15, 2020
Programming
0
140
テスト駆動開発 輪読会 vol.2 / TDD Reading Session
makasn
July 15, 2020
Tweet
Share
Other Decks in Programming
See All in Programming
FindyにおけるTakumi活用と脆弱性管理のこれから
rvirus0817
0
510
CJK and Unicode From a PHP Committer
youkidearitai
PRO
0
110
パッケージ設計の黒魔術/Kyoto.go#63
lufia
3
430
Design Foundational Data Engineering Observability
sucitw
3
200
1から理解するWeb Push
dora1998
7
1.9k
Navigating Dependency Injection with Metro
zacsweers
3
260
print("Hello, World")
eddie
2
530
AIと私たちの学習の変化を考える - Claude Codeの学習モードを例に
azukiazusa1
10
4.1k
RDoc meets YARD
okuramasafumi
4
170
MCPでVibe Working。そして、結局はContext Eng(略)/ Working with Vibe on MCP And Context Eng
rkaga
5
2.3k
旅行プランAIエージェント開発の裏側
ippo012
2
910
開発チーム・開発組織の設計改善スキルの向上
masuda220
PRO
20
11k
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
Site-Speed That Sticks
csswizardry
10
810
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Writing Fast Ruby
sferik
628
62k
Scaling GitHub
holman
463
140k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
840
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Why Our Code Smells
bkeepers
PRO
339
57k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Transcript
テスト駆動開発 輪読会 vol.2 6章〜11章 2020年07月15日 by makasn
前回のおさらい • TDDにおけるシンプルなルール ◦ 自動化されたテストが失敗したときのみ、新しいコードを書く ◦ 重複を除去する • 仮実装と明白な実装を行き来しながら進めていくのが良い •
コードを一般化できるのは2つ以上の実例があるときだけ • 意図を語るテストを書こう • 動かしてから正しくしていくために、原則を一度破る
第6章 テスト不足に気づいたら • 素早く先に進むために多くのコードをコピー&ペーストしてきたため、コード をきれいにする段階にやってきた • テストが十分に書かれていないコードを相手にTDDを行う場合、あればよ かったと思うテストを書こう
第7章 疑念をテストに翻訳する • 頭の中にある疑念をテストとして表現する • 完璧ではないもののまずまずのやり方でテストを通す • さらなる設計は本当に必要になるときまで先延ばしにする
第8章 実装を隠す • 我々は型に弱い... • 重複を除去できる状態に一歩近づけた • メソッド宣言だけは親クラスに移動 • Factory
Methodパターンでテストコードから2つのサブクラスの存在を隠し た
第9章 歩幅の調整 • TDDを行う際には歩幅を微調整する ◦ 非常に細かなステップを窮屈に感じるなら歩幅を大きくする ◦ 不安を感じるならば歩幅を小さくする • 完全に同じ内容になったメソッドを親クラスへ引き上げていく
第10章 テストに聞いてみる • レッドバーが出ている時に新しくテストを加えるのは避けたい ◦ 手堅い方法は、レッドバーの原因になった変更を巻き戻し、グリーン バーに復帰すること • しかし我々PHPerは最終的にdollarメソッドとfrancメソッドでMoneyにキャ ストできてないからエラー出てますよね。。
第11章 不要になったら消す • コンストラクタだけになったDollarとFrancを消す • ここでようやくテストが通るようになる • 冗長になってしまうテストたちを消す
まとめ • 一貫して小さなステップで進めるのがTDDの醍醐味なんだなと感じた。 • 頭の中にある疑念をテストとして表現することや、レッドバーの原因になっ た変更を巻き戻し、グリーンバーに復帰することが大事。 • PHPではここまで型の恩恵を受けていない分、どうしてもステップが少し大 きめになってしまうのかもしれないと思った