DDD / Refactoring Toward a Fitting Structure


適切な構造へのリファクタリング (P481)

要約

  • 役に立つ構造を見つける唯一の方法は,ドメインと問題に対するとても深い理解であり,その理解への現実的なやり方は,反復的な開発プロセスです.
  • EVOLVING ORDER に従うチームは,プロジェクトのライフサイクルを通じて大規模構造を再考しなければなりません.誰もドメインを理解しておらず,要求が不十分な時期に思いついた構造にしがみついてはいけません.
  • 残念ながら,その進化が意味することは,最終的な構造を最初から利用することは出来ないということであり,そのためにリファクタリングをしなければならないということです.それは高コストで難しいことですが,必要なことです.コストを制御して最大の結果を得るための一般的な方法があります.

ミニマリズム

  • コストを抑えるための鍵の一つは,構造を単純で軽量にしておくことです.包括的にしようとしてはいけません.最も重要な概念に取り組み,残りに対してはケースバイケースな対処に任せてください.
  • 早い段階では,ゆるやかな構造 (例えば SYSTEM METAPHOR または いくつかの RESPONSIBILITY LAYERS) を選ぶことが役立つこともあります.ミニマルでゆるやかな構造は,混沌を防ぐ軽量なガイドラインを提供します.

コミュニケーションと自己管理能力

  • 全てのチームは新しい開発とリファクタリングで構造に従わなければなりません.それには,構造は全てのチームによって理解されなければならず,その用語と関係は UBIQUITOUS LANGUAGE に入れられなければなりません.
  • 大規模構造は,プロジェクトが広範なシステムに対処するために,そして様々な人が独立しながらも調和した決定をするために,語彙を提供することができます.しかし,大規模構造の多くがゆるやかな概念上のガイドラインなので,チームは自己管理能力が必要です.
  • 関係者のこだわりがないと,構造は腐敗する傾向があります.構造は抽象的な傾向にあるため,アプリケーションの一貫性は大きなチーム (または複数のチーム) 全体で維持するのが難しくなります.

再構築による柔軟な設計

  • システムの複雑さが増し,理解が深まるにつれ,構造は進化します.構造が変わるたびに,システム全体は新しいやり方を遵守するために変化しなければなりません.それは大変な仕事です.
  • それは思ったほど悪いことではありません.大規模構造による設計の変更は,それがない場合よりとても簡単です.理由の一部は,現在の構成を理解していれば再編成はより簡単であることです.
  • 繰り返し変更されたモデルは,何ヶ月も着こなした後の革のジャケットのように馴染みます.絶えず増大する知識がモデルに埋め込まれ,変更の主軸が認識され,安定した面がシンプルになり,柔軟性を増します.

蒸留が負荷を軽減する

  • モデルに適用されなければならないもう一つの重要な力は,継続的な蒸留です.それは,様々な方法で構造を変更する困難さを軽減してくれます.最初に,CORE DOMAIN からGENERIC SUBDOMAIN やその他のサポート構造などのメカニズムを取り除くことにより,再構築が少なくなるかもしれません.
  • できれば,これらのサポート要素は単純な方法で大規模構造にフィットしなければなりません.例えば,RESPONSIBILITY LAYERS を用いたシステムでは,GENERIC SUBDOMAIN が一つの層となるように定義することが出来ます.PLUGGABLE COMPONENTS では,GENERIC SUBDOMAIN は一つのコンポーネントによって完全に所有したり,関連するコンポーネント間の SHARED KERNEL としたりすることができます.これらのサポート要素は,構造の中での位置を見つけるためにリファクタリングしなければならないかもしれません.しかし,それらは CORE DOMAIN とは無関係に移動し,より狭い範囲に集中することで,リファクタリングをより簡単にします.
  • 深い洞察に向かう蒸留とリファクタリングの原則は,大規模構造自体にも当てはまります.例えばレイヤは,ドメインに対する初期の表面的な理解に基づいて選ばれるかもしれません.それらは徐々に,システムの基礎となる責任を表す深い抽象概念に取り替えられます.この鋭利な明快さは,人々にゴールとなる深い設計を見せます.それはシステムの大規模構造を容易かつ安全に操作できるようにすることをも意味します.

担当者のつぶやき

  • 最後のところは他のパターンの予習不足で理解不足なまま書き出すだけになってしまった... 意味不明なこと書いてるかも.心より恥じる.

みんなの突っ込み


まとめ (議事録)

  • 最初からうまくやろうとしすぎない.
  • 進化し続ける.
    • 単純さを維持.
    • 自己管理.
      • 部屋の掃除を毎日すれば 1 回あたりの負担は少ないけど,さぼってしまうと大掃除になるので益々サボってしまう.分かってるけど毎日掃除するのが一番大変.