.NET な開発者のための Test-Driven Development に関する話題なら何でも。
■ TDD に関係無さげな記事 (スレッド) を起こすときはタイトルの先頭に「【雑談】」等と付けて下さい ■
TDD 道場とは、 blog の方にも書きました…
http://www.tdd-net.jp/2010/01/coding-dojo-inf.html
…が、 ↓こういうお遊びです。
【 TDD 道場 】
* プロジェクタに接続された 1台の PC でコーディングする。
* ペアでコーディングする。
* 5 〜 10分間隔でペアの片方を交代する。
* コーディングを担当しているときは、 自分が何をしているのかを説明しながらキーボードをタイプする。
* 聴衆は、 テストがきちんと通っている場合にだけ、 設計について意見を述べてもよい。 テストが通っていない状態では、 設計については質問しかできない。
* 聴衆が現在おこなわれている作業について混乱してきたら、 コーディングしている人は手を止めて、 自分がいまやっていることを説明しなければならない。
コメント
で、 面白そうなんで、 まずは 「わんくま勉強会 名古屋 #11」 (2010/2/6)
http://www.wankuma.com/seminar/20100206nagoya11/
の昼休みに、 ゲリラ的にやっちまおうと思います。
# いや、 ちゃんと親分には話通したからねっ f(^^;
てことで、 どんな風になるかさっぱりワカランのですけど。 とりあえず、 お題を出してもらえると!
# 昼休みフルには出来んだろうから、 30分くらい? すると 4交代くらいかなぁ。 書けるコード量も、 ひとりなら 5分で書けちゃうくらいがいいとこかな。
>>1
ほほー、おもしろそうですね。
ペアプロ+テストファースト+聴衆ってとこですか。
時間管理はLT用カウンターを使うか、聴衆に見せる必要がなければ砂時計を使ってもいいと思います。
# 砂時計は、やってみると結構焦る
ネタは……バイナリサーチとかどうでしょうか。
>>2
砂時計! いいですね。
LT みたいにシビアに時間を切る必要は無いと思うので。
誰か持ってないかな〜? f(^^;
バイナリーサーチとはまた難しいものを (TDD 的にw)。
時間内に完成しなくても構わないとは思うけど。 やれるかなぁ。
※ バイナリーサーチ
http://www.codereading.com/algo_and_ds/algo/binary_search.html
/*
1. 配列をソートする(ここでは昇順でソートされたとする)
2. 配列の中央にある要素を調べる
3. 探索
* 中央の要素が目的の値ではなく、目的のデータが中央の値より大きい場合、中央より後半の部分を調べる
* 中央の要素が目的の値ではなく、目的のデータが中央の値より小さい場合、中央より前半の部分を調べる
4. 2.に戻る
*/
>>3
たぶん持っていると思うので、発掘したら持って行きます。
一応、LT用カウンタも用意しておいていただけると助かります。
>>1
自分もちょっと考えてみましたが、あまり言語に依存しないというか比較的理解し易い実装になるであろう、FizzBuzzをお題にするのはどうでしょうか。
実の所、自分で出しておいて何ですが、如何にも実践向きでないお題だなぁと思っていますが、初めての試みなので分かり易いものが良いかなと。
>>4
> たぶん持っていると思うので、発掘したら持って行きます。
よろしくです〜 (発掘成功したら、ね f(^^; )
> 一応、LT用カウンタも用意しておいていただけると助かります。
LTカウンターなら、ホンモノ (LT用) を使っちゃえばいいよね?
あと、 TDD 道場用の PC は、 私の Eee PC の予定です。 (遅いぞ! w)
・VS2010 Ult. beta2
・C# 2008 Exp. + NUnit 2.5
…の選択になるですよ。 (その場で決めるつもり)
あ、 選択肢に VB 2008 Exp. も用意しといたほうがいいのかな?
>>5
FizzBuzz は手馴れたもので f(^^;
先日の TechFielders でもやったですよ。
http://www.tdd-net.jp/2010/01/tech-fielders-6.html
完成した製品コードがごく短い割には、 TDD 三原則も適度に入ってるし、 落とし穴もちゃんとあるw
ただいかんせん短いので、 ヘタをするとペア 1交代くらいで終わっちゃう可能性が f(^^;
なお、 バイナリーサーチが難しいのは、 内部設計の話だからです。 TDD 的には、 内部設計はどうであれ、 ちゃんとサーチできればいいわけで。 つまり、 内部設計がこうなるべし、 と見通して適切なテストケースを与えていかねばならない。
# でも難しいだけに、 面白そう f(^^;
Agile DayでTDDのアドバイスをもらった者です。
(仕様変更になったら修正対象テストケースが爆発したという話をしてました)
こんにちは。
まだ、TDDを実践できない者としては、単純だけど実際に現場で実装されるようなお題がいいと思います。
例えば、入力文字のバリデーションとか。
TDDをやろうとしたときに、三原則を守れませんでした。思わず、TDDサイクルの最初の方でこんなの書いたりして(郵便番号バリデーション)。既に三原則違反なんですけれど。
Regex.IsMatch(item, "^\\d{3}-(\\d{2}|\\d{4})$");
すると全角はNGになるよね?というチェックを入れたいなと思っても、三原則に違反するかたちになると。
そんな簡単なところでつまづくのが初心者なんじゃないかなと思います。
>>8
> Agile DayでTDDのアドバイスをもらった者です。
> (仕様変更になったら修正対象テストケースが爆発したという話をしてました)
あのときはありがとうございました。 楽しかったですね♪
修正対象テストケースが爆発する話、 上手く言えなかったかもしれないのでもう一度 f(^^;
・TDD 三原則に反してムダなテストケースを書きすぎると、 爆発してたいへんなことになる。
・そもそも、 メソッドを上手く分割できていないので、 必要なテストケース数が爆発している。
※ 後者についてはこちらを ⇒ http://bluewatersoft.cocolog-nifty.com/blog/2009/05/2-8801.html
> まだ、TDDを実践できない者としては、単純だけど実際に現場で実装されるようなお題がいいと思います。
> 例えば、入力文字のバリデーションとか。
文字のバリデーション!
いやこれは、 お題に困ったときのワイルドカードで f(^^;
・半角数字で n 桁以内
…って簡単なのから、
・Shift JIS 互換の文字だけで、 ダメだった文字位置もかえす
…な〜んていう面倒なものまで選り取りミドリ。
>>8
(続き)
> TDDをやろうとしたときに、三原則を守れませんでした。思わず、TDDサイクルの最初の方でこんなの書いたりして(郵便番号バリデーション)。既に三原則違反なんですけれど。
>
> Regex.IsMatch(item, "^\\d{3}-(\\d{2}|\\d{4})$");
RED-GREEN の 1 ステップでこれだけジャンプしても、 それが苦にならないなら構わないと思いますよ。
> すると全角はNGになるよね?というチェックを入れたいなと思っても、三原則に違反するかたちになると。
私は、 TDD 三原則からは外れますけど、 不安を解消するためにテストケースを追加するのは構わない、 というかやるべきだと思っています。 (それどころか、 「慣れないうちは同値分析やって全部のテストケース書いとけ!」 って言っちゃうくらいで。)
この場合だと 「\d は全角数字にはマッチしない …ハズ?」 という不安を無くすために、 全角は通らないというテストケースを書く、 と。
あー、 これは別にスレを起こそうかな f(^^;
>>6
よくよく考えたら自分のEeePCに入れいているVisualStudioはMSDNサブスクリプションライセンスで入れているので、他者が使うとライセンス的にまずいですね。そう言った意味でExpressEditionのインストールは必要なのか。
あと、Javaの環境も欲しいですね。JDKとEclipseが入っていれば良いのかな。TDD Boot Campの時もそれだけだったかもですね。
http://d.hatena.ne.jp/a-hisame/20091220/1261342174
>>11
あ〜、しまった。 Java をすっかり忘れていた (汗;
簡単なお題にして、 C#/VB, Java と複数言語で繰り返したほうが面白いかな?
>>10
※ げ。 「最近の投稿」 ってダレだよ〜っ!? …私です f(^^; (入力補完ミスった)
みなさま、 いろいろなご意見ありがとうございました
m(_`_)m
そろそろ決めちゃわないといけないので、 決めちゃいます。 f(^^;
・初めてのことなんで、やっぱりともかく簡単なヤツ
⇒ お題: FizzBuzz
・そのかわり、2言語やる
⇒ (VB or C#) と Java
わんくま名古屋#11 にご参加のみなさん、できるだけお昼持参でおいでくださいませ。
なお、Java の最初のドライバーは、昼前のセッションで PowerShell ネタを話してくれる秋野氷雨さんが、引き受けてくださることになりました。
後のペアは、どうにも行き詰ったら氷雨さんがフォローしますので、安心して参加してくださいね。 (C#/VB の最初のドライバーは私がやります。ので、後続ペアは安心できないかもw)
# で、上手く行ったら。次は1言語に絞って、バリデーション (電話番号とか、テストケースの洗い出しが難しい) をやって、その次はバイナリーサーチ (指定されたアルゴリズムを導出するテストケースが難しい)、かな。
本日の わんくま名古屋#11 の昼休みに、 はじめての TDD 道場を開催しました。 参加されたみなさん、いかがでしたか?
って、 まぁ予定通りに gdgd だったわけですけどw
もう少し、 TDD.NET のほうに書きました。
http://www.tdd-net.jp/2010/02/tdd-11-f2d4.html
次回はもう少しちゃんとできると思います f(^^;
「昼休みにヘンなことするんじゃねぇ!」 って話が無いようなら、 これからも続けていきたいと思いますので、 またよろしくです〜♪
technology made trend developing <a href="http://www.solstation.com">emissions douglass long possibly web</a> [url=http://www.sciencedaily.com]decrease years[/url] http://www.physorg.com