エンジニアリングとお金の話

都内で働くエンジニアの日記です。

システム設計の原則7

【SPONSORED LINK】

システム設計の原則7感想

業務データとロジックを一体にして業務ロジックを整理する

クラス設計で大切なことは、使う側のクラスのコードがシンプルになるように設計すること。そういうオブジェクト指向らしいクラスを設計するためには次の点に気を付ける。

  • メソッドをロジックの置き場所にする
  • ロジックをデータを持つクラスに移動する
  • 使う側のクラスにロジックを書き始めたら設計を見直す
  • メソッドを短くして、ロジックの移動をやりやすくする
  • メソッドでは必ずインスタンス変数を使う
  • クラスが肥大化してきたら分ける
  • パッケージを使ってクラスを整理する

古いjavaの設計・書き方しか知らなかったのでオブジェクト指向らしい設計とは何かを学ぶことが出来た。また、クラスが肥大化し分ける際に、関連性の強いデータとロジックだけを集めたクラスを凝集度が高いと言う。凝集とは切っても切れない関係のことで、オブジェクト指向のクラス設計の基本である。クラス設計を行う際はこの凝集度を高めて行くことを意識する必要がある。

ドメインオブジェクト

関連する業務データと業務ロジックを1つにまとめたオブジェクトをドメインオブジェクトと呼ぶ。ドメインとは対象領域、問題領域という意味。クラス設計を行う際は小さい単位の業務データと業務ロジックの関係に注目する。

ドメインオブジェクトとして小さな単位に分けて整理するとクラスの数が膨大になる。そうすると見通しが悪くなるので、パッケージでグルーピングを行う。

業務アプリケーションの対象領域をオブジェクトのモデルとして整理したものをドメインモデルと呼ぶ。ドメインモデルは業務で扱うデータと関連する業務ロジックを集めて整理したもの。ドメインモデルを見れば業務全体がどういう関心事から成り立っているのかを理解出来る。