OOPだと、データと処理を1まとめに!!という記述を良く見る。
でも、私がプログラムを組むときは1まとめにしたりしてない…。
たとえば、従業員がいたとする。
class Employees {
private int baseSalary;
// そのたモロモロ
}
従業員の給与計算をしなきゃならないといわれたらOOPの教科書では↓みたいにEmployeesクラスにメソッドが追加される。
class Employees {
private int baseSalary;
public int calcSalary() {
// 色々計算
}
// その他もろもろ
}
でも、自分で設計するときは、そうせずに↓みたいに別クラスにロジックを切り出すように作る。
class なんて名前になるだろうね {
public int calcSalary(Employees emp) {
// なにやら計算する
}
}
ドメインモデル貧血症万歳!って感じです。
最近は、こっちのほうが現実の世界を現してるような気がしてきた。
現実では、従業員全員が自分の給与を計算したりはしてない。
給与計算は、別の誰かが従業員のデータを見てしてるはず。
そういった視点でみるとドメインモデル貧血症ちっくなつくりが自然に思えてきた今日この頃でした。