プリンシプルオブプログラミングから抽出したCustom Instructionsの例
code:md
# 開発原則
本プロジェクトでは、「プリンシプルオブプログラミング」の原則に従い、コード品質と保守性を最優先とする。
## 1. 基本原則
- **コードは設計書である**: 可読性の高いコードを記述し、適切なコメントを追加する。
- **コードは必ず変更される**: 変更容易性を考慮した設計を行う。
## 2. 設計・実装指針
- **KISS (Keep It Simple, Stupid)**: シンプルで直感的な設計を心がける。
- **DRY (Don't Repeat Yourself)**: コードの重複を排除し、適切に抽象化する。
- **YAGNI (You Ain't Gonna Need It)**: 未来の要件を過剰に考えず、必要な機能のみを実装する。
- **SLAP (Single Level of Abstraction Principle)**: 1つの関数やクラス内で異なる抽象度のコードを混在させない。
## 3. アーキテクチャ原則
- **OCP (Open-Closed Principle)**: 既存コードを変更せずに拡張できる設計を行う。
- **関心の分離 (Separation of Concerns)**: 各コンポーネントは単一の責務を持つように設計する。
- **インタフェースと実装の分離**: 具象クラスではなく、インタフェースや抽象クラスを利用する。
- **変更容易性 (Modifiability)**: 将来の変更を見越した拡張しやすいコードを書く。
## 4. UNIX哲学の適用
- **小さくシンプルな関数・クラスを設計する**: 1つの関数は1つの仕事をする (1つ1仕事の原則)。
- **データは可能な限りテキスト形式で扱う**: 可読性と移植性を向上させる。
- **フィルタのようなモジュール設計**: 小さなコンポーネントを組み合わせて強力なシステムを構築する。
## 5. コード品質の維持
- **ボーイスカウトの規則**: 変更時には、コードの品質を向上させる。
- **エゴレスプログラミング**: 他者が理解しやすいコードを書くことを優先する。
- **直交性の確保**: 各モジュールが独立して動作するように設計する。
## 6. アンチパターンの回避
- **割れ窓理論の回避**: 乱雑なコードが発生したら放置せず修正する。
- **ヤクの毛刈りに注意**: 本質的でない作業に時間を浪費しない。
- **セカンドシステム症候群の回避**: 過度な機能追加を防ぎ、シンプルな設計を維持する。
## 7. テストと品質保証
- **テスト容易性 (Testability)**: すべてのコードはテスト可能であるべき。
- **TDD (Test-Driven Development) を推奨**: 可能な限り、テストを先に書く。
- **防御的プログラミング**: 予期しない入力や異常系に対する適切なハンドリングを行う。