もうひとつの FizzBuzz ~ 数をして語らしむ ( #TDDBC 札幌2.2 より )
TDD の練習として定番の FizzBuzz 問題。
寺子屋未満: TDD Boot Camp 札幌 2.2に参加しました
2011/11/9 @irasally
そう、札幌名物、SmalltalkでのTDDBC参戦です。
数のリストをループさせてそれぞれを判定するロジックを考えていたのだけど、考え方が違った。
「それぞれの数が、自分が何者なのかを判定できるようにする」
「外からは”自分が何者なのかを判定するように”というメッセージを送る」という考え方でした。
なるほど。 C# で、 さっそくやってみた。 こんなふうかな?
※ Visual C# 2010 Express + NUnit 2.6beta
[TestFixture()]
public class FizzBuzzExtensionTest {
[TestCase(1, "1")]
[TestCase(3, "Fizz")]
[TestCase(5, "Buzz")]
[TestCase(15, "Fizz Buzz")]
public void SayFizzBuzzTest(int n, string expected) {
string result = n.SayFizzBuzz();
Assert.That(result, Is.EqualTo(expected));
}
}
public static class FizzBuzzExtension {
public static string SayFizzBuzz(this int me) {
if (me.IsFizzBuzz())
return "Fizz Buzz";
if (me.IsFizz())
return "Fizz";
if (me.IsBuzz())
return "Buzz";
return me.ToString();
}
private static bool IsMultipleOf(this int me, int n) {
return (me % n) == 0;
}
private static bool IsFizz(this int me) {
return (me.IsMultipleOf(3) && !me.IsMultipleOf(5));
}
private static bool IsBuzz(this int me) {
return (!me.IsMultipleOf(3) && me.IsMultipleOf(5));
}
private static bool IsFizzBuzz(this int me) {
return (me.IsMultipleOf(3) && me.IsMultipleOf(5));
}
}
| 固定リンク
« [VS2010] Visual Studio 11 (vNext) の CTP が出てきた今、 VS2010 を買うには? | トップページ | [本] アジャイルサムライ ~ アジャイルマインドの伝道書 »
「プログラミング」カテゴリの記事
- 【.NET / Win8.1 ストアアプリ】 HttpClient で TLS 1.1 / 1.2 に対応するには(2018.06.17)
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- 【.NET Core】 プロジェクトを作ると 「project.assets.json が見つかりません」 エラー(2018.02.10)
- 【#UWP】 ビットマップの表示色を変える (Win2D.uwp 経由で Direct2D を使う)(2017.08.23)
- 【#UWP】 CompactOverlay モード: Picture in Picture というか、「最前面に表示」するウィンドウを作る(2017.08.16)
この記事へのコメントは終了しました。
コメント