そして次に、いまの「日付として正しい」の実装をこう書き直す。
private bool 日付として正しい
{
get { return 年が正しい && 月が正しい && 日が正しい; }
}
|
これはつまり、
「『日付として正しい』というのは『年が正しくて、月が正しくて、日が正しいこと』」
ということだ。それをそのままC#で書いただけだ。後は、取りあえずビルドが通るように、次のように書き足す。
private bool 年が正しい
{
get { return true; }
}
private bool 月が正しい
{
get { return true; }
}
private bool 日が正しい
{
get { return true; }
}
|
またここまでの実装コードを「動く設計書」とともにビルドして再びNUnitでチェック。まだ赤の部分は減っていないことが分かる。
この後もやることは同様だ。いま追加した3つのプロパティの実装内容を、次のように書き直す。
「『年が正しい』というのは『一年以上であること』」
private bool 年が正しい
{
get { return year >= 1; }
}
|
「『月が正しい』というのは『一月から十二月の間であること』」
private bool 月が正しい
{
get { return (month >= 1 && month <= 12); }
}
|
「『日が正しい』というのは『一日から月の最終日の間であること』」
private bool 日が正しい
{
get { return (day >= 1 && day <= 月の最終日); }
}
|
で、ビルドが通るように、再び未定義の部分を取りあえず書く。
private int 月の最終日
{
get { return 31; }
}
|
以上の実装コードを「動く設計書」とともにビルドして、NUnitでチェック。だいぶ赤いところが減ってくる。
|
動く設計書と実装コードの食い違い(かなりエラーが減った状態) |
|