このツイートをみて、コードエクセレンスというのがあるのを知ったので、
いろいろ調べてみたときの備忘録(*´ω`*)
CLAUDE./md にt_wadaの推奨する進め方、リファクタリングはMartin Fowlerが推奨する進め方と指定することで丁寧なガイドライン入れなくても良くなった!
— ささかま🐳 (@sasakama_code) June 27, 2025
ただ、時々忘れるので plan modeで思い出させてあげる必要はある感じ。 https://t.co/C0oNTKfmoc pic.twitter.com/JWsVyFE2xR
https://t.co/CfKqszUwMB
— ささかま🐳 (@sasakama_code) June 28, 2025
こちらのライブラリで設計原則をまとめたものをコードエクセレンス原則と表現していたので使用していました。
ただ、人物名+原則名のが効果があるので今は使ってない表現ですね。
出典はMysticLibraryから
Mystic Library は、AIプロンプトエンジニアリングのための高品質なプロンプト集・テンプレート集を提供するオープンソースプロジェクトです。
AIと人間の創造性を最大限に引き出すための多様なプロンプトを、静的サイトとして誰でも簡単に閲覧・活用できます。
書いてある原則は以下の10個
本ドキュメントは、最高のプログラミングコードを作成するための要件を定義します。
以下の基本的な原則に基づき、コードの品質と開発効率を向上させます。
- DRY(Don't Repeat Yourself)
- 責務の分離(Separation of Concerns)
- KISS(Keep It Simple, Stupid)
- 分割統治(Divide and Conquer)
- 防御的プログラミング(Defensive Programming)
- YAGNI(You Aren't Gonna Need It)
- コードの可読性とドキュメンテーション
- テスト駆動開発(TDD)とユニットテスト
- バージョン管理とコードレビュー
- SOLID原則
以上の要件を満たすことで、効率的でメンテナンス性が高く、信頼性のある最高のプログラミングコードを実現します。
コードエクセレンスといってもいろいろあるっぽい
いろんなAIに聞いてみると、含まれる原則や原則の詳細も若干ブレがある感じ
大体は、SOLID+DRY+YAGNIっぽい感じ
GoogleのAIによる概要
Google検索で表示される「AIによる概要」だとこんな感じ
コードエクセレンス原則とは、高品質なコードを記述するための指針となる原則のことです。
これらの原則は、コードの可読性、保守性、拡張性を向上させ、開発効率を高めることを目的としています。
具体的な原則としては、SOLID原則(単一責任の原則、Open/Closed原則、Liskovの置換原則、インターフェース分離原則、依存性逆転原則)や、DRY原則(Don't Repeat Yourself)、YAGNI原則(You Ain't Gonna Need It)などが挙げられます。
コードエクセレンス原則の主なもの:
- 単一責任の原則 (Single Responsibility Principle - SRP):
- 1つのクラスやモジュールは、1つの責任(変更理由)を持つべきであるという原則です。これにより、変更の影響範囲を局所化し、保守性を高めることができます。
- Open/Closed原則 (Open/Closed Principle):
- ソフトウェアのエンティティ(クラス、モジュール、関数など)は、拡張に対して開かれており、変更に対して閉じているべきであるという原則です。これにより、既存のコードを変更することなく、新しい機能を追加できるようにします。
- Liskovの置換原則 (Liskov Substitution Principle - LSP):
- サブタイプは、そのベースタイプと互換性があるように振る舞うべきであるという原則です。これにより、継承関係にあるクラスを安全に置き換えることができ、予期せぬエラーを防ぎます。
- インターフェース分離原則 (Interface Segregation Principle - ISP):
- クライアントは、自分が使用しないインターフェースに依存すべきではないという原則です。これにより、インターフェースを細分化し、クライアントの依存関係を最小限に抑えます。
- 依存性逆転原則 (Dependency Inversion Principle - DIP):
- 上位モジュールは、下位モジュールに依存すべきではなく、抽象に依存すべきであるという原則です。また、抽象は詳細に依存すべきではなく、詳細が抽象に依存すべきです。これにより、モジュール間の依存関係を疎結合にし、柔軟性を高めます。
- DRY原則 (Don't Repeat Yourself):
- コードの重複を避け、同じロジックを複数の場所に記述しないようにするという原則です。これにより、保守性を高め、変更の際に影響範囲を最小限に抑えることができます。
- YAGNI原則 (You Ain't Gonna Need It):
- 現時点で必要でない機能は実装しないという原則です。これにより、不要なコードの追加を防ぎ、シンプルさを保つことができます。
Claude
(プロンプト)コードエクセレンスに含まれる原則を箇条書きで一覧にしてください
- Single Responsibility Principle(単一責任の原則)
- Open/Closed Principle(開放閉鎖の原則)
- Liskov Substitution Principle(リスコフの置換原則)
- Interface Segregation Principle(インターフェース分離の原則)
- Dependency Inversion Principle(依存性逆転の原則)
- DRY (Don't Repeat Yourself)
- KISS (Keep It Simple, Stupid)
- YAGNI (You Aren't Gonna Need It)
- 意味のある名前を使う
- 関数は小さく、一つのことを行う
- コメントは必要最小限に
- ボーイスカウトルール
- 関心の分離(Separation of Concerns)
- 疎結合・高凝集
- Convention over Configuration
- Composition over Inheritance
- Law of Demeter(デメテルの法則)
- 早すぎる最適化は諸悪の根源
- テスト駆動開発(TDD)
- コードの臭い(Code Smells)の回避
このあたりから気になる原則の出典や著者名を追加して、
人物名+原則で列挙しておくと、良い感じにコードを生成してくれるかもしれない
また、どのAIモデルが誰の何を知っているかは異なるので、
検索や推論をさせずに説明してもらい、内容を確認するのもあり
いろいろ試してみよう(*´ω`*)