coding について
機能実装、リファクタリング、コードレビューに取り組む開発者向けの汎用コーディングスキルです。保守性の原則に加え、静的解析、テスト、セキュリティ、変更の検証手順を示します。
主な機能
- 01DRY、KISS、SOLIDの指針
- 02読みやすいコードと小さな関数
- 03入力検証とセキュリティ対策
- 04Lintと静的解析の確認
- 05コードレビューとテスト検証
活用シーン
- 01新機能の実装計画
- 02保守性を保ったコードのリファクタリング
- 03変更に伴うセキュリティと回帰の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ davidkiss/ smart-ai-skills --skill codingインストール後、Claude Code で/codingを入力して読み込まれたか確認します。
詳細
一般的なコーディングのベストプラクティス
概要
このスキルでは、ソフトウェア開発における基本原則と実践方法を紹介します。新機能の実装、既存コードのリファクタリング、コードレビューの際に活用し、品質と保守性を高めてください。
基本原則
- DRY(同じことを繰り返さない): ロジックの重複を避けます。同じコードを2回書いていることに気づいたら、抽象化してください。
- KISS(シンプルに保つ): 複雑な解決策よりも、単純でわかりやすい解決策を優先します。過剰な設計は避けてください。
- YAGNI(必要になるまで作らない): 実際に必要になるまで、機能や抽象化を実装しないでください。
- SOLID 原則:
- 単一責任:クラスや関数を変更する理由は1つだけにします。
- オープン・クローズド:ソフトウェアの要素は、拡張に対して開かれ、変更に対して閉じている必要があります。
- リスコフの置換:サブタイプは、基底型と置き換え可能でなければなりません。
- インターフェース分離:汎用的なインターフェースを1つ用意するより、クライアント固有のインターフェースを複数用意するほうが適切です。
- 依存関係逆転:具象ではなく、抽象に依存します。
- 既存のガイドライン: - プロジェクト内の既存のガイドライン(例:CLAUDE.md、AGENT.md など)に従います。
実装ガイドライン
- クリーンコード: 変数、関数、クラスには説明的な名前を付けます。読みやすく、理解しやすいコードを書いてください。
- 小さな関数: 関数は小さく保ち、単一のタスクに集中させます。
- エラー処理: 先回りしてエラーを処理します。入力を検証し、例外を適切に処理してください。
- ドキュメント: 何をするかではなく、なぜそうするかを記述します。可能な限り、コード自体で内容が伝わるようにしてください。
- セキュリティ: 入力をサニタイズし、秘密情報のハードコードを避け、最小権限の原則に従います。
- パフォーマンス: 時間計算量と空間計算量を意識しつつ、時期尚早な最適化は避けます。
自動解析と品質管理
- 静的解析とリンティング: すべてのプロジェクトで、自動リンティング、フォーマット、静的解析(例:ESLint、Prettier、Ruff、Sonar)を必ず導入してください。
- 確認: これらのツールが設定されているか確認します。
- 提案: 設定されていない場合は、直ちに導入を提案します(例:
npm install --save-dev eslint)。
- 自動テスト: テストランナーが設定されていることを確認します(例:Jest、Pytest)。
- 確認:
tests/ディレクトリ、またはpackage.json/pyproject.toml内のテスト設定を確認します。 - 提案: 設定されていない場合は、テストフレームワークと初期設定を提案します。
- 確認:
コード変更の検証
タスクを完了する前に、必ず次の検証手順を実施してください。
- 簡素化: code-simplifier プラグインを使用して、コードをより簡潔で保守しやすくします。
- セルフコードレビュー:
- タスクの要件に照らして変更内容をレビューします。
- この
codingスキル(DRY、KISS、SOLID)に準拠していることを確認します。 - セキュリティ上の脆弱性やパフォーマンスの低下につながる可能性がないか確認します。
- 静的解析とリンティング:
- プロジェクトにリンティング/フォーマット設定がない場合は、導入を提案します。
- プロジェクトのリンティング/フォーマットコマンド(例:
npm run lint、prettier --check .)を実行します。 - 報告された問題をすべて修正します。
- ユニットテスト:
- プロジェクトにテストランナーが設定されていない場合は、導入を提案します。
- 不足しているテストの追加: 新しいロジックを追加した場合は、正常系とエッジケースを網羅する簡潔なユニットテストを書きます。
- テストの実行: テストスイートを実行します(例:
npm test、pytest)。 - 検証: すべてのテストが成功することを確認します。失敗した場合は、実装またはテストを修正します。
重要な原則
- 巧妙さより明確さ: まず人間が理解しやすいコードを書き、その次に機械にとっての効率を考えます。
- 一貫性: 既存のコードベースで確立されたパターンとスタイルに従います。
- 継承より合成: 深い継承階層を作るのではなく、単純なオブジェクトを組み合わせて複雑なオブジェクトを構築することを優先します。
コメント
Markdown 対応