MRが楽しい

MRやVRについて学習したことを書き残す

AWESOME-COPILOTのドキュメントを読む その68(Design Patterns for Object-Oriented Programming for Clean Code)

本日はAWESOME-COPILOTの技術調査枠です。
AWESOME-COPILOTのドキュメントを読みながら実際に操作を試して記事に残します。
今回はカスタムインストラクションの一つDesign Patterns for Object-Oriented Programming for Clean Codeについてです。

Design Patterns for Object-Oriented Programming for Clean Code

Design Patterns for Object-Oriented Programming for Clean Codeはオブジェクト指向(OOP)の設計パターンを正しく使うためのベストプラクティスです。
扱う内容はGoFデザインパターン(Factory / Singleton / Observerなど)、SOLID原則、オブジェクト指向設計です。

以下のページからDesign Patterns for Object-Oriented Programming for Clean Codeのインストールボタンをクリックして取得します。
github.com

インストールボタンを押してDesign Patterns for Object-Oriented Programming for Clean Codeダウンロードします。
すると.github/instructions配下にインストラクションがインストールされます。

インストールしたインストラクションはCopilotの動作に自動的に適用されます。
このインストラクションを読み込むと、Copilotはただコードを書くのではなく状況に応じて適切なデザインパターンを選択して提案するようになります。

具体的にはCopilotは以下のような行動をとります。

デザインパターンを自動的に適用する

Copilotは以下のように問題に応じて適切なパターンを選択します。

問題 提案されるパターン
オブジェクト生成 Factory
状態管理 State
通知 Observer
拡張性 Strategy

SOLID原則を前提に設計する

Copilotはコードを書く際に以下のSOLID原則を守るようになります。

  • 単一責任(SRP)
  • 開放閉鎖(OCP)
  • 依存性逆転(DIP)

これにより設計の質が大きく上がります。

クラス設計の質が向上する

Copilotは1クラスに全て書くのではなく役割ごとに分割することを提案します。
例えば以下のような役割分割を行います。

  • Controller
  • Service
  • Repository

継承よりコンポジションを優先する

インストラクションの特徴としてCopilot はis-a(継承)よりhas-a(組み合わせ)を優先します。
これにより以下のメリットがあります。

  • 柔軟性が高い
  • テストしやすい

パターンの過剰使用を避ける

Copilotは無駄にパターンを適用せず、シンプルな解決を最優先に考えます。
必要なときだけパターンを利用します。

パターンの意図を説明する

Copilotはコードの提案だけでなく何故そのパターンを使うかも説明します。
例えば以下のような説明を行います。

Strategyを使う理由:
- アルゴリズムを差し替え可能にするため

アンチパターンを避ける

Copilot は以下のアンチパターンを避ける提案を行います。

  • 神クラス
  • 過剰な継承
  • 密結合

テストしやすい設計

デザインパターンを使うことで以下を自然に導入します。

  • DI
  • モック
  • インターフェース