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
Node-RED を(HTTP で)つなげる MCP サーバーを作ってみた
highu
0
110
Cline指示通りに動かない? AI小説エージェントで学ぶ指示書の書き方と自動アップデートの仕組み
kamomeashizawa
1
580
Team topologies and the microservice architecture: a synergistic relationship
cer
PRO
0
1.1k
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
660
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
320
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
48
31k
Enterprise Web App. Development (2): Version Control Tool Training Ver. 5.1
knakagawa
1
120
Hypervel - A Coroutine Framework for Laravel Artisans
albertcht
1
110
たった 1 枚の PHP ファイルで実装する MCP サーバ / MCP Server with Vanilla PHP
okashoi
1
210
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
230
イベントストーミング図からコードへの変換手順 / Procedure for Converting Event Storming Diagrams to Code
nrslib
1
500
Java on Azure で LangGraph!
kohei3110
0
170
Featured
See All Featured
Practical Orchestrator
shlominoach
188
11k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
Building Applications with DynamoDB
mza
95
6.5k
Code Reviewing Like a Champion
maltzj
524
40k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
How GitHub (no longer) Works
holman
314
140k
Unsuck your backbone
ammeep
671
58k
GitHub's CSS Performance
jonrohan
1031
460k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Thoughts on Productivity
jonyablonski
69
4.7k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
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ではここまで型の恩恵を受けていない分、どうしてもステップが少し大 きめになってしまうのかもしれないと思った