No more Death March

あるSEのチラシの裏 C# WPF

パラメータのオブジェクト化

クラス全体が不変だったり、不変な属性が交っている場合(DDDのエンティティとか)

 

例えばこんな感じ

 

このままだと変更に弱いので、ビルダークラスと分ける。

 

 

メリット

・仕様変更があってもPersonクラスのコンストラクタを増やす必要がない。

・チェック処理をBuildメソッドで書けるのでコンストラクタがごちゃごちゃしない。

インスタンス生成のタイミングが制御しやすい。

・初期化処理にバリエーションがあるならビルダーをラップしたファクトリを作れば良い。

 

デメリット?

・単純に記述量が増える。

・クラスが増える。

 

仕様変更を重ねてコンストラクタがオーバーロード祭りになるくらいなら

コンストラクタのパラメータを専用オブジェクトにしときたい。