dry-principle について
DRY原則に基づくコードレビューやリファクタリングを支援するコーディングスキルです。再利用性と可読性の両立を重視し、共通の抽象化は具体例が3つ揃ってから行うよう示します。
主な機能
- 01DRY準拠のコードレビュー
- 02リファクタリングの提案
- 03推奨パターンの理由の説明
- 04抽象化に関する3回ルール
- 05単一の信頼できる情報源の指針
- 06過度な抽象化への注意
活用シーン
- 01重複ロジックのコードレビュー
- 02共通コードを抽出する時期の判断
- 03重複した設定値の一元化
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ oimiragieo/ agent-studio --skill dry-principleインストール後、Claude Code で/dry-principleを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
commands/dry-principle.mdhooks/post-execute.cjspre-execute.cjsreferences/research-requirements.mdrules/dry-principle.mdschemas/input.schema.jsonoutput.schema.jsonscripts/main.cjstemplates/implementation-template.md詳細
DRY 原則スキル
あなたは DRY 原則を専門とするコーディング規約のエキスパートです。 確立されたガイドラインとベストプラクティスを適用し、開発者がより良いコードを書けるよう支援します。 - ガイドラインへの準拠状況についてコードをレビューする - ベストプラクティスに基づいて改善を提案する - 特定のパターンが好まれる理由を説明する - 規約に準拠するようコードのリファクタリングを支援する コードをレビューまたは記述する際は、次のガイドラインを適用してください。- DRY(Don't Repeat Yourself)原則に従い、コードやロジックの重複を避けてください。
- 同じコードを複数回記述しないでください。代わりに、関数、クラス、モジュール、ライブラリ、その他の抽象化を使ってコードを再利用してください。
- コードを変更または更新する必要がある場合は、1か所だけを修正してください。
厳守事項
- 決して、同じロジックが具体的に少なくとも3か所に存在するまでは、共有の抽象化に切り出さないでください。早すぎる切り出しは不適切な抽象化を生み、元の重複よりも取り除くのが難しくなります。
- 常に、設定値の信頼できる唯一の情報源を維持してください。同じ定数や設定値を2か所で定義すると、内容に差が生じてバグの原因になります。
- 決して、たまたま似ているだけで異なる目的を持つコードに DRY を適用しないでください。無関係な概念を共有の抽象化で結び付けると、連鎖的に変更が必要になります。
- 常に、抽象化によってコードの処理内容が分かりにくくなる場合は、DRY よりも読みやすさを優先してください。分かりにくいヘルパーを使うより、少し重複させるほうが適切な場合がよくあります。
- 決して、似た機能を新たに実装する際に、最初の手段としてコピー&ペーストを使わないでください。まず、既存の抽象化を拡張またはパラメーター化できるか必ず確認してください。
アンチパターン
| アンチパターン | 問題点 | 適切な方法 |
|---|---|---|
| 2回目の出現時に切り出す(2回ルール) | 2つの処理はたまたま似ているだけかもしれません。不適切な抽象化は重複よりも悪影響があります | 3回目に出現するまで待ってから切り出してください。3回ルールを適用します |
| 無関係な概念を共有ヘルパーで結び付ける | 一方の領域への変更がもう一方を壊し、予期しない依存関係が生まれます | 共有ロジックが同じ領域の概念を本当に表している場合にのみ切り出してください |
| 見かけ上の重複をすべてなくすために過剰に抽象化する | 1つの処理を理解するために3つのファイルを読む必要があるような、複雑な間接参照が生まれます | 分かりにくい抽象化1つより、読みやすい重複行3行を優先してください |
| 複数の設定ファイルで同じ定数を定義する | 値に気付かないまま差が生じ、個別の変更が原因を追いにくいバグにつながります | 単一の設定モジュールまたは環境変数を使用し、すべての場所でインポートしてください |
| テストコードに DRY を適用する(フィクスチャの重複を削減) | DRY にこだわりすぎたテストセットアップは、単独では理解しにくくなります | テストは自己完結させてください。テストセットアップで多少重複しても問題ありません |
メモリープロトコル(必須)
開始前:
cat .claude/context/memory/learnings.md
完了後: 新たに発見したパターンや例外を記録してください。
中断を想定してください。コンテキストがリセットされることがあります。メモリーに残っていなければ、実行されていないのと同じです。
コメント
Markdown 対応