$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

エリック・エヴァンズのドメイン駆動設計読んだ

エリック・エヴァンスのドメイン駆動設計

エリック・エヴァンスのドメイン駆動設計

読んだ。

エンティティ、値オブジェクト、集約など、自分の中でなんとなくの理解になっていたところを、より具体的に言語化出来たことが良かった。一方、用語が難解なため理解が難しく、既に経験則でなんとなく理解していることを言語化する役には立ったが、新しい知識を習得できたという実感はないことが残念だった。なぜDDD初心者はググり出してすぐに心がくじけてしまうのか - little hands' labの記事を読んだとき「分かる分かる」って感じだったので、「実践ドメイン駆動設計」をまた読んでみようと思う。

実践ドメイン駆動設計 (Object Oriented SELECTION)

実践ドメイン駆動設計 (Object Oriented SELECTION)

読書ノート

* 4つのレイヤ 1938
    * プレゼンテーション層
    * アプリケーション層
    * ドメイン層
    * インフラストラクチャ層
* エンティティ: 主に同一性によって定義されるオブジェクト 2314
* 値オブジェクト: ドメインにおける記述的な側面を表現し、概念的な同一性を持たない場合、そういうオブジェクトは値オブジェクトと呼ぶ 2459
* サービス: 2615
    * モデルにおいて独立したインターフェースとして提供される操作で、状態をカプセル化していない
    * クライアントに対して何が実行できるかという観点から定義
    * 名詞でなく動詞的
* 優れたサービスの特徴 2639
    * 操作がドメインの概念に関係しており、その概念がエンティティや値オブジェクトの自然な一部ではない
    * ドメインモデルの他の要素の観点からインターフェースが定義されている
    * 操作に状態がない
* 集約: 関連するオブジェクトの集まりであり、データを変更するための単位 3102
    * 集約のルートのエンティティを決め、内部へのオブジェクトのアクセスはそれ経由にして制御する
    * ルートエンティティは集約内での不変条件も管理する
* 意図の明白なインターフェース 5310
    * ユビキタス言語を使って、クラスと操作にはその効果と目的を記述する名前をつけることで、利用者に意図を表明する
* リファクタリングのタイミング 6715
    * 設計が、ドメインに関するチームの現在の理解を表現していない
    * 重要な概念が設計で暗黙的になっている(かつ、それを明示的にする方法が分かっている)
    * 設計において重要な部分を、よりしなやかにする好機がある