Clean Architecture Part 3 -- Design Principles

Clean Architectureデザインパターン勉強メモ

出典: 

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

    • 要旨