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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
makasn
July 15, 2020
Programming
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
テスト駆動開発 輪読会 vol.2 / TDD Reading Session
makasn
July 15, 2020
Other Decks in Programming
See All in Programming
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
180
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
380
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
130
Vite+ Unified Toolchain for the Web
naokihaba
0
140
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
440
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
320
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
4.8k
JavaDoc 再入門
nagise
0
300
Swiftのレキシカルスコープ管理
kntkymt
0
220
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
120
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
140
TAKTでAI駆動開発の品質を設計する
j5ik2o
6
1.1k
Featured
See All Featured
A Soul's Torment
seathinner
6
2.9k
Why Our Code Smells
bkeepers
PRO
340
58k
30 Presentation Tips
portentint
PRO
1
320
Product Roadmaps are Hard
iamctodd
PRO
55
12k
For a Future-Friendly Web
brad_frost
183
10k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
430
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Speed Design
sergeychernyshev
33
1.8k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
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ではここまで型の恩恵を受けていない分、どうしてもステップが少し大 きめになってしまうのかもしれないと思った