20150703 『断捨離』TDDとは

60
断断断Natsuki Nishino

Transcript of 20150703 『断捨離』TDDとは

Page 1: 20150703 『断捨離』TDDとは

『断捨離』

Natsuki Nishino

Page 2: 20150703 『断捨離』TDDとは

断捨離

Page 3: 20150703 『断捨離』TDDとは
Page 4: 20150703 『断捨離』TDDとは

荷物の整理終わるかな…

Page 5: 20150703 『断捨離』TDDとは

日頃から掃除しておけばよかったなぁ…

Page 6: 20150703 『断捨離』TDDとは

サービスのコードも同じです

Page 7: 20150703 『断捨離』TDDとは

こんな経験ありませんか?※刺激に弱い方はご注意ください

Page 8: 20150703 『断捨離』TDDとは

何をしているコードなのかわからない

Page 9: 20150703 『断捨離』TDDとは
Page 10: 20150703 『断捨離』TDDとは
Page 11: 20150703 『断捨離』TDDとは
Page 12: 20150703 『断捨離』TDDとは
Page 13: 20150703 『断捨離』TDDとは

…やってみたら

Page 14: 20150703 『断捨離』TDDとは

あぁ… ( 略

Page 15: 20150703 『断捨離』TDDとは

心当たりがない方は

Page 16: 20150703 『断捨離』TDDとは

おやすみなさい(´ ・ ω ゞ )Zzz

Page 17: 20150703 『断捨離』TDDとは

やっと本題

Page 18: 20150703 『断捨離』TDDとは

TDDって知ってますか?

Page 19: 20150703 『断捨離』TDDとは

TestDriven

Development

Page 20: 20150703 『断捨離』TDDとは

テスト駆動開発

Page 21: 20150703 『断捨離』TDDとは

TDDは

『動作する、キレイなコード』

を目指す手法のひとつ

Page 22: 20150703 『断捨離』TDDとは
Page 23: 20150703 『断捨離』TDDとは

動くコードって?

Page 24: 20150703 『断捨離』TDDとは

普段書いているコードは

大半が動いているハズ( ・ _・ ;) デスヨネ ?

Page 25: 20150703 『断捨離』TDDとは

キレイなコードって?

Page 26: 20150703 『断捨離』TDDとは

さっき切なくなった現象が

起きないもの( `・ ω ・ ´)

Page 27: 20150703 『断捨離』TDDとは
Page 28: 20150703 『断捨離』TDDとは
Page 29: 20150703 『断捨離』TDDとは
Page 30: 20150703 『断捨離』TDDとは

仲間や明日の自分がなんだこれ… ( ; ´Д

` )って

頭を抱えないコードのこと

Page 31: 20150703 『断捨離』TDDとは

動作する、キレイなコードを

目指す道のりは 2 種類•先にキレイにする•先に動くようにする

Page 32: 20150703 『断捨離』TDDとは

まずキレイに書いてから動くようにしていく

Page 33: 20150703 『断捨離』TDDとは
Page 34: 20150703 『断捨離』TDDとは
Page 35: 20150703 『断捨離』TDDとは
Page 36: 20150703 『断捨離』TDDとは

まず動くようにしてからキレイにお掃除する

キレイに変更していく間に“ 壊していないこと” はテストコードが担保する

Page 37: 20150703 『断捨離』TDDとは

どうやってやるの?

Page 38: 20150703 『断捨離』TDDとは

1.目標を考える2.その目標を示すテストを書く

3.実行して失敗させる (Red)4.テストを成功させるコードを書く (Green)

5.テストの成功を維持したまま リファクタリングする

6.1 ~ 5 を繰り返す…

Page 39: 20150703 『断捨離』TDDとは

@Testpublic void testGetLargeNum () { TwoNumber twoNum = new TwoNumber(1, 5); assertThat(twoNum.getLargeNum(), is(5));}

public int getLargeNum () { return 0;} RED…

2 つの整数を渡して、大きい方を返す

Page 40: 20150703 『断捨離』TDDとは

書いたテストを成功させる@Testpublic void testGetLargeNum () { TwoNumber twoNum = new TwoNumber(1, 5); assertThat(twoNum.getLargeNum(), is(5));}

public int getLargeNum () { return y;}

GREEEEEEEEEN!!!!

Page 41: 20150703 『断捨離』TDDとは

次のテストを書く、失敗する@Testpublic void testGetLargeNum2 () { TwoNumber twoNum = new TwoNumber(6, 2); assertThat(twoNum.getLargeNum(), is(6));}

public int getLargeNum () { return y;} RED…

Page 42: 20150703 『断捨離』TDDとは

書いたテストを成功させる

public int getLargeNum () { int result = 0; if ( x > y ) { result = x; } else { result = y; } return result;}

GREEEEEEEEEN!!!!

Page 43: 20150703 『断捨離』TDDとは

成功を維持したまま、お掃除する

public int getLargeNum() { return x < y ? y : x;}

GREEEEEEEEEN!!!!

Page 44: 20150703 『断捨離』TDDとは
Page 45: 20150703 『断捨離』TDDとは

作ったその場で

毎日お掃除!毎日断捨離!

Page 46: 20150703 『断捨離』TDDとは
Page 47: 20150703 『断捨離』TDDとは

テストはコードの命綱

Page 48: 20150703 『断捨離』TDDとは

お掃除がこわくない!

Page 49: 20150703 『断捨離』TDDとは

実際の開発でやってみたらこんなHappyが

Page 50: 20150703 『断捨離』TDDとは

ゴールが明確なので迷走しない!

Page 51: 20150703 『断捨離』TDDとは

テスト書きにくいな…

と思ったら設計を疑う

Page 52: 20150703 『断捨離』TDDとは

テストを充てやすいコードになる

Page 53: 20150703 『断捨離』TDDとは

メソッドが単機能化する

Simple is the best.

Page 54: 20150703 『断捨離』TDDとは

コードがキレイだと調査や改修が簡単!

Page 55: 20150703 『断捨離』TDDとは

コードがキレイだとあれ…? ( ・ _・ ;)が起きにくい!!

Page 56: 20150703 『断捨離』TDDとは

テストコードがあると

バグを生んだら教えてくれる!!

Page 57: 20150703 『断捨離』TDDとは

定時に帰れる !!

Page 58: 20150703 『断捨離』TDDとは

私物もコードも日常的にキレイにしておきたいです

ねぇ。

Page 59: 20150703 『断捨離』TDDとは

特別な環境は不要!おためしあれ~

Page 60: 20150703 『断捨離』TDDとは