20150703 『断捨離』TDDとは

Post on 11-Aug-2015

1.357 views 3 download

Transcript of 20150703 『断捨離』TDDとは

『断捨離』

Natsuki Nishino

断捨離

荷物の整理終わるかな…

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

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

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

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

…やってみたら

あぁ… ( 略

心当たりがない方は

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

やっと本題

TDDって知ってますか?

TestDriven

Development

テスト駆動開発

TDDは

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

を目指す手法のひとつ

動くコードって?

普段書いているコードは

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

キレイなコードって?

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

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

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

` )って

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

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

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

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

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

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

どうやってやるの?

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

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

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

6.1 ~ 5 を繰り返す…

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

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

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

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

public int getLargeNum () { return y;}

GREEEEEEEEEN!!!!

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

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

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

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

GREEEEEEEEEN!!!!

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

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

GREEEEEEEEEN!!!!

作ったその場で

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

テストはコードの命綱

お掃除がこわくない!

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

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

テスト書きにくいな…

と思ったら設計を疑う

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

メソッドが単機能化する

Simple is the best.

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

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

テストコードがあると

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

定時に帰れる !!

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

ねぇ。

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