はてぶ見ていたら下記の記事があったのだけど色々モヤッとしたコードだなと思ったのでリファクタリングしてみる。どうしてもDDD界隈のコードは見るとどうしてもモヤッとしてしまう感じがする。 panda-program.com もともとのコード 普通に考えたらこうなるのでは そもそもモデリング上の値オブジェクトは何を指していたのか もっと値オブジェクトは自由でよいのでは 蛇足 追記:無理やりgenericsで型を使ってみた 追記:phantom typeを使ってみた もともとのコード 元記事のコードは動かないので、最後の一行以外は動くように適当に変更している。 元記事の趣旨は、このコードであればDollarとYenという違う単位のものを計算しようとするとコンパイルエラーになるから良いということである。しかしながら、このコードを見るとぱっと見て下記の欠点がある。 DollarとYenは非常に似た性質