TL;DR
Dollarを Value Object として実装した。- テストを通した後にすぐリファクタリングせず、テストケースを追加して実装を一般化する「三角測量」を使った。
内容
Value Object
Value Object は、オブジェクトを値として扱うデザインパターンである。コンストラクタで設定したインスタンス変数の値は変更できないという制約を持つので、操作はすべて新しいオブジェクトを返す。
このパターンを使うと、別名参照の問題を気にしなくて済む。別名参照の問題とは、2 つの変数が同じオブジェクトを参照しているときに、片方を通して変更するともう片方も変わってしまうことである。
三角測量
三角測量は、第2章で挙げた TDD の 3 つの戦略の最後の 1 つである。テストを通した後に、さらにテストケースを追加して、実装をより一般化する。
三角測量を使うのは、どうリファクタリング・設計すればよいか分からないときだけである。分かっているなら、その通りに書けばよい。