項目2.多くのコンストラクタパラメータに直面したときにはビルダーを検討する
書かれている内容
- staticファクトリメソッドとコンストラクタは、多くのオプションパラメータに対しては、どちらもうまく対応できない
- テレスコーピング・コンストラクタ・パターンは、コードを書くのが困難になり、加えてそのコードを読むのはさらに困難になる
- JavaBeansパターンは生成過程の途中で不整合な状態にあるかもしれない
- JavaBeansパターンはクラスを不変にする可能性を排除してしまう
- ビルダーはテレスコーピング・コンストラクタ・パターンの安全性とJavaBeansパターンの可読性を組み合わせている
個人の見解
ビルダーを検討しないといけないようなオプションパラメータが多い状況は、オブジェクトの責務が大きすぎるように思う。
まずはオブジェクト指向エクササイズの「1つのクラスにつきインスタンス変数は2つまでにすること」を心がけた上で、選択肢の1つとしたい。
オブジェクト指向エクササイズとは
9つのルール
- 1つのメソッドにつきインデントは1段階までにすること
- else 句を使用しないこと
- すべてのプリミティブ型と文字列型をラップすること
- 1行につきドットは1つまでにすること
- 名前を省略しないこと
- すべてのエンティティを小さくすること
- 1つのクラスにつきインスタンス変数は2つまでにすること
- ファーストクラスコレクションを使用すること
- Getter, Setter, プロパティを使用しないこと
リファクタリング用コード