勉強日記

チラ裏

Clean Architecture Part 3 -- Design Principles

www.pearson.com


Part 3 -- Design Principles

  • SOLID原則の教えるところ
    • 関数とデータ構造を「クラス」にまとめるやり方
    • クラスどうしの相互接続のあり方
    • 「クラス」はオブジェクト指向言語を前提とはしていない
      • 「ふるまいとデータがまとまったアレ」のこと
  • SOLID原則の目標: 「よいレンガ」をつくる
    • 下記のようなモジュール
      • 変更に強い
      • 理解しやすい
      • 多くのシステムで再利用可能
  • その後で、より高水準の「アーキテクチャ」について学んでいく
    • レンガがまずいとよい建造物は作れない
    • だが、よくできたレンガでもめちゃめちゃな建造物を建てられてしまう
  • SOLIDの昔話
    • 統廃合があって今の形になった
    • 2004, Michael Feathers氏の指摘でこの順番に
  • サマリー
    • SRP: The Single Responsibility Principle
      • コンウェイの法則からの帰着
        • ソフトウェアの構造は、それ使う組織の構造から影響を受けるよ、ってやつ
      • ソフトウェアのモジュールの変更理由はただ一つであるべき
    • OCP: The Open-Closed Principle
      • 1980s、Bertrand Meyer提唱
      • 変更のしやすいソフトウェア設計とは?
      • 既存のコードを変更するのではなく、新しいコードを追加してふるまいを変えられる設計
    • LSP: The Liskov Substitution Principle
      • 1988, Barbara Liskovによる派生型の定義
      • 交換可能なソフトウェア部品を作るには、Contract(契約)に準拠させなければならない
    • ISP: The Interface Segregation Principle
      • 使わないものに依存するな
        • 【補】使うものだけインタフェースに切り出せってことかな
    • DIP: The Dependency Inversion Principle
      • 高水準のポリシーと低水準の実装詳細を分ける
      • ポリシーは実装詳細に依存すべきではない
      • 逆に、実装詳細がポリシーに依存すべき

英語

  • corollary
    • 当然の帰着
  • gist
    • 要旨