オブジェクト指向エクササイズ9つのルール
ルール
メソッド内でのインデントは1段階まで
else句を使わない
プリミティブ型と文字列型はラップする
1行につき、ドットはひとつまでにする
名前を省略しない
全てのエンティティは小さく
1つのクラスにつき、フィールドは2つまで
ファーストクラスコレクションを使用する
Getter,Setter,プロパティを使用しない
メモ
1.メソッド内でのインデントは1段階まで
- IF文は早期リターンをつかう
- nullチェックはnull-objectパターンを使うことを考える
- 二重なFor文は別メソッドに切り出す
2. else句を使わない
- 早期リターンやStrategyパターン
3.プリミティブ型と文字列型はラップする
- 変数が多くなると変数の命名だけでは役割がわからなくなる。
- 変数に対する操作をカプセル化する
4.1行につき、ドットはひとつまでにする
- オブジェクトの持ち物を操作するなら、オブジェクト側に操作を追加する。
5.名前を省略しない
- そもそも長い名前(クラス名・メソッド名)にならないようにする?
- 1つのクラスは役割は1つ(難しい…)
6.全てのエンティティは小さく
- 1パッケージ10ファイル、1クラス50行
- 役割の細分化
7.1つのクラスにつき、インスタンス変数は2つまで
- 関連のあるフィールドはクラス化してまとめる
- 無関係なフォールドがあると設計を見なおしたほうがいいかも
8.ファーストクラスコレクションを使用する
- データのリストをラップする
- コレクションは多くの振る舞いを持っているが、それではソースを読む際のプログラム上の意図やヒントを示せない。
- コレクションの汎用的なメソッドでは、そのソースの意図が伝わりにくい。
ルール8:ファーストクラスコレクション - Strategic Choice
コレクションの振る舞いは外に見せる必要が無いかな
9.Getter,Setter,プロパティを使用しない
一個ずつやっていこう。
参考
オブジェクト指向エクササイズ – Sonix Engineer Blog