新人がtddを学ぶ方法
DESCRIPTION
TDD カンファレンス2012 LTTRANSCRIPT
@kunitoo
フィードバック、ご意見感想、だめだしはこの後の懇親会または、@kunitoo でお待ちしています
自己紹介•受託開発をしているJavaプログラマ• 新卒で入社して、TDDを初めて知った•オブジェクト指向が好き•意図の伝わるソースコードを書くことを大切にしている
概要
•新人がTDDをどのように学んだか
•普段どのように考えてテストを書いているか
新人がTDDをどのように学んだか
•師匠とペアプロ(ペア作業)•指示を貰いながらコードを書く
プロダクトコードを
変更しようとすると
「まずテストから書こうか」
を繰返した
繰返し言われることによって自然とテストから書くようになった
テスト書くようになったはいいが、実際に一人で書こうとすると手が止まることが大かった
なぜ手が止まるのか?
あれも考慮しなきゃあ!そしてたらあっちもだ。じゃさっきのは大丈夫なのかな?
師匠の教え
•余計なことは考えない。•今必要な一番簡単な例を一つだけ考えよう。
•不安、自信のないところのテストを書こう。
必要なことを必要なときやる
•簡単な例を繰返し徐々に必要なプロダクトを組み立ていく
普段どのようにテストを書いているか•ポーカーを題材に作成してみる•プレイヤーがワンペアかどうか判定するメソッドを作成* ワンペア:同一ランク(数字)のカード2枚のペア1セット(残り3枚は何でもよい)。
isOnePairを作ろう!
•クラスを作る(Player)•テストクラスを作る(TestPlayer)
•手持ちカードの数字が1、1、2、3、4の時trueを返す
isOnePairがtrueを返す
手持ちカードの数字が1、1、2、3、4の時
手持ちカードの数字が1、1、2、3、4の時
手持ちカードの数字が1、1、2、3、4の時
手持ちカードの数字が1、1、2、3、4の時
isOnePairを作ろう!
•手持ちカードの数字が1、2、3、4、5の時falseを返す
手持ちカードの数字が1、2、3、4、5の時falseを返す
手持ちカードの数字が1、2、3、4、5の時falseを返す
isOnePairは完成?
isOnePairは完成?次のケースを考えないといけない。スート(絵柄)とかね
まとめ
余計なことを考えず小さく自分が考えやすいことからテストを作っていくことで徐々にコードを育てていくことができる。
TDDのテストは具体な状況を考えやすい形で書いていくもの