メメメモモ

プログラミング、筋トレ、ゲーム、etc

「現場で役立つシステム設計の原則」を読んだ

現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法

現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法

分析や設計について勉強したいと思い、読みました。 DDDのことについてコンパクトにまとまった本でした。 DDDの本は以前に読んでいるのですが、いまいち腑に落ちていない状態だったのですが、この本を読むことによってある程度、腑に落ちました。 また、DDDの本に挑戦したいと思います。

以下、印象に残った記述のまとめです。

  • 値オブジェクトも用いて、ドメインに関する値を正しく表現すること
  • コレクションオブジェクトを用いて、コレクション操作を集約させること
  • 値オブジェクト/コレクションオブジェクトは、完全コンストラクタで不変にすること
  • ドメインオブジェクトで狭い関心事に特化したクラスを作ること
  • プレゼンテーション層/アプリケーション層/データソース層 + ドメインモデル
  • 分析・設計でドメインモデルを抽出すること
  • モノ/ヒト/コトで業務の関心事を分類すること
  • パッケージ図/業務フロー図/コンテキスト図/主要クラス図で全体図を把握すること
  • DB設計時はNotNull/一意性/外部キーなどの制約を使うこと
  • DBではコトの記録を徹底すること
  • 集計結果の記録などは補助的な役割であり、UPDATEは使わずDELETE/INSERTで行うこと(記録の同時性)
  • 画面にはさまざまな利用者の関心事が詰め込まれる
  • 物理的なビュー(画面を表示する技術方式に依存したビューの表現)
  • 論理的なビュー(「複数の段落」という「構造」だけを表現)
  • 複雑なデータ構造の場合、JSONよりもXMLのほうが便利
  • 分析と設計を一体にした開発がオブジェクト指向の基本
  • 分析/設計/実装/テストのすべての工程を同じ担当者が行うこと
  • ソースコード = ドキュメントになるようにドメインモデルを実装すること