NAgileで始める実践アジャイル開発
全体的にとてもいい感じ。シンプルに考える方向性が、自分の考え方とかなり似ている。
ひとつだけ違うなと思ったところがあったり。
private bool 日付として正しい { get { return 年が正しい && 月が正しい && 日が正しい; } }
ここんとこ、C# の書き方はよくわからんけど、return のところに論理式を書くのは個人的にはあまり好きじゃない。個人的には(C# の書き方がわからんから Java で書くと)
private boolean 日付として正しい { if (!年が正しい) { return false; } if (!月が正しい) { return false; } if (!日が正しい) { return false; } return true; }
みたいに書く。
あと、コンストラクタで例外を出すのはあまり好みじゃなかったり。というのは、「13月32日」というのを言葉に出す人がいるんだから、概念的には「13月32日」という Date は生成できてもかまわない。現実的な問題としては、それって太陽暦や太陰暦では不当な日付だけど、その日付がありうる暦があってもいいやん、て感じ。
そういう観点からすると、
public boolean 日付として正しい { if (!年が正しい) { return false; } if (!月が正しい) { return false; } if (!日が正しい) { return false; } return true; }
として、Date クラスを使う側に正当性の検査を任せたい。