カテゴリー「*TDD の練習」の3件の記事

実際に TDD してみる練習問題 ( ソースコード付き )

2013年12月 8日 (日)

TDD 最初の一歩 (C#編) #tddadventjp

このエントリーは、 TDD Advent Calendar 2013 の 8日目です。
このエントリーのサンプルコードは、 Microsoft Developer Network サンプル  「TDD 最初の一歩 (C#編) 言語: C# Visual Studio 2012 用」 からダウンロードできます。

TDD Advent Calendar を読んでる人の中には 「TDD やったことないよ!」 という開発者もいらっしゃることでしょう。
まずは、 やってみましょう。

本稿では、 無償の Visual Studio Express 2012 を使い、 C# でコーディングします。

 

■ まえふり ~ .NET Framework と TDD

.NET Framework で TDD やるための情報は、 たぶんとても少ないのです。

というのも、 言語を付けて TDD をぐぐってみると、 ↓こんな感じだから。

TDD Java 約 197,000 件
TDD Ruby 約 151,000 件
TDD PHP 約 149,000 件
TDD JavaScript 約 122,000 件
TDD Python 約 101,000 件
TDD C# 約 61,700 件
TDD VB 約 41,600 件

桁違い… orz

本屋を巡っても書籍はありませんし。
あ、 昔は 1冊↓あったんですよ。 ずいぶん前に絶版になってます orz

20131207_tdd01
Microsoft.NET でのテスト駆動開発

まぁ、 そんなわけで、 このサイトをやってたり、 CodeZine で連載させてもらったりしてるわけです。

 

■ 課題 ~ FizzBuzz プログラム

1 から 100 までの Fizz Buzz をコンソールに表示するプログラムを作れ。
実行ファイルの名前は 「FizzBuzz1to100.exe」 とする。

Fizz Buzz (Wikipedia より)

最初のプレイヤーは「1」と数字を発言する。 次のプレイヤーは直前のプレイヤーの次の数字を発言していく。
ただし、 3で割り切れる場合は 「Fizz」、 5で割り切れる場合は 「Buzz」、 両者で割り切れる場合は 「Fizz Buzz」 を数の代わりに発言しなければならない。

続きを読む "TDD 最初の一歩 (C#編) #tddadventjp"

| | コメント (0) | トラックバック (0)

2009年8月17日 (月)

[TDD の練習] WinForm を改造したい ~ GUI に埋もれたロジックを分離して、ユニットテストを書く

Randommove6_01 ネタ元 ⇒ わんくま掲示板 : PictureBoxを左右に往復するループ

質問されたかたはプログラミングの初心者らしく、 どこかから持ってきたサンプルコードを少し改造しようとして苦労しておられました。
※ サンプルコードを動かしてみる → 改造してみる という手法は、 プログラミングに上達するための有効な手段のひとつだと思います。 私も、 いまだによくやります。
掲示板では、 かなり紆余曲折はありましたが、 最後には御自分の納得のいく動きをするコードになったようです。 その途中で 「消えてしまった」 問題を、 ここでは扱ってみます。

・ オリジナルのソース : フォーム上を、 一定速度で画像が左右に動く。
・ やりたいこと : 一回ごとに移動する距離を、 乱数で決めさせたい。
※ 途中で、 「一回ごと」 が 「片道のあいだ中」 に仕様変更され、 「難しい問題」 が消えてしまいました。

今回は、 練習問題というよりも、 GUI からロジックを切り離すリファクタリングを、 ユニットテストのサポート無しで慎重に行う手順を見ていただけたら、 と思います。
回答例のソリューション一式はこちら → WankumaHomework20090810_20090817.zip [69,127バイト]
※ VB 2008 Express + NUnit 2.5 用

続きを読む "[TDD の練習] WinForm を改造したい ~ GUI に埋もれたロジックを分離して、ユニットテストを書く"

| | コメント (2) | トラックバック (0)

2009年6月16日 (火)

[TDD の練習] 文字を変換する

ネタ元 ⇒ わんくま掲示板 : 以下について教えてください

もうタイトルからして、 学校の課題だか宿題だかって感じがビンビンしますけど。
仕様としては、 こんな感じらしい。

・ 大文字は小文字に、 数字は '0', '1', '2' ... を '9', '8', '7' ... と反転させる。
・ ただし、 '#' 以降の文字は変換しない。
・ 例として "Abc012_59F_#012Gh" を渡した場合の戻り値は "abc987_40f_#012Gh" となる。

で。 みきぬ さんが VB の Select ~ Case で綺麗に条件分岐を書いてくれたり、 επιστημηさんが華麗なワンライナーのワザを披露してくれたりしてます。 なんかもう、 短さ競争になってますが… ここはひとつ、 TDD やって長くする方向で。

続きを読む "[TDD の練習] 文字を変換する"

| | コメント (0) | トラックバック (0)