PromleeBlog

posting thumbnail
SOLID原則をわかりやすく理解して適用する

📅

パターン知識の階層 (Hierarchy of Pattern Knowledge) 🔗

  1. デザインパターン (Design Patterns)
    • Strategyパターン (Strategy Pattern)
      アルゴリズムの一群を定義し、それぞれをカプセル化して、相互に置き換えられるようにします。
      戦略を使うクライアントは、利用中に戦略を切り替えられます。
  2. オブジェクト指向の原則 (Object-Oriented Principles)
    • 変化する部分をカプセル化します。
    • 継承よりも合成を優先します。
    • 実装ではなくインターフェースに対してプログラミングします。
  3. オブジェクト指向の基礎 (Object-Oriented Basics)
    • クラスとオブジェクト
    • 継承
    • ポリモーフィズム
    • カプセル化
    • 抽象化

設計の不吉な臭い (Design Smells) 🔗

悪い設計を示す、さまざまな兆候や症状です。
名前症状
硬直性 (Rigidity)システムを変更しにくい状態です。一つ変更するたびに、際限なく連鎖する変更が必要になります。
脆弱性 (Fragility)システムの一部を変更すると、ほかの複数の無関係な部分が壊れます。
移植困難性 (Immobility)別のシステムで再利用できるように、システムを構成要素へ切り離すことが困難です。
粘着性 (Viscosity)設計に沿ったコードを追加するより、その場しのぎのコードを追加するほうが容易な場合、粘着性が高いといえます。
不要な複雑さ (Needless Complexity)現在は不要でも、いつか役立つかもしれない複雑なコード構造が数多くあります。
不要な繰り返し (Needless Repetition)二人のプログラマーがコピー&ペーストして書いたかのように見えるコードです。
不透明性 (Opacity)表現の複雑さにより、元の作成者の意図を理解することが難しくなります。

依存関係の管理 (Dependency Management) 🔗

設計の不吉な臭いは、
管理されていない依存関係
から生まれます。
管理されていない依存関係
オブジェクト指向言語は、依存関係を管理するためのさまざまな機能を提供します。

オブジェクト指向設計の原則 (Object-Oriented Design Principles) 🔗

  1. Robert C. MartinによるSOLID原則
  2. Craig LarmanによるGRASP原則
  3. 実装ではなくインターフェースに対してプログラミングする (Interface-Oriented Programming)
  4. クラスの継承よりオブジェクトの合成を優先する
  5. 変化する部分をカプセル化する

SOLID原則 🔗

  1. 単一責任の原則 (
    S
    ingle Responsibility Principle) —
    SRP
  2. オープン・クローズドの原則 (
    O
    pen-Closed Principle) —
    OCP
  3. リスコフの置換原則 (
    L
    iskov Substitution Principle) —
    LSP
  4. インターフェース分離の原則 (
    I
    nterface Segregation Principle) —
    ISP
  5. 依存性逆転の原則 (
    D
    ependency Inversion Principle) —
    DIP
    SOLID原則をわかりやすく理解して適用する | PromleeBlog