clean-code について
ソフトウェア開発者向けの Clean Code ガイドです。Robert C. Martin の著作を基に現代の修正を加え、言語を問わない原則をまとめています。
主な機能
- 0110 分野のコーディング項目
- 02影響度順のルール
- 03命名、関数、エラー処理の指針
- 04オブジェクト、境界、システム設計の解説
- 05ユニットテストとシンプルな設計
活用シーン
- 01関数やクラスの作成・リファクタリング
- 02コードの保守性レビュー
- 03ユニットテストの改善
- 04サードパーティ依存のラップ
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill clean-codeインストール後、Claude Code で/clean-codeを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
metadata.jsonassets/templates/_template.mdreferences/_sections.mdbound-learning-tests.mdbound-wrap-third-party.mdclass-cohesion.mdclass-isolate-from-change.mdclass-organize-for-change.mdclass-separate-concerns.mdclass-small.mdcmt-avoid-commented-out-code.mdcmt-avoid-redundant.mdcmt-explain-intent.mdcmt-express-in-code.mdcmt-warning-consequences.mdemerge-expressiveness.mdemerge-simple-design.mderr-avoid-null.mderr-define-by-caller-needs.mderr-provide-context.mderr-use-exceptions.mderr-write-try-catch-first.mdfmt-horizontal-alignment.mdfmt-indentation.mdfmt-team-rules.mdfmt-vertical-formatting.mdfunc-abstraction-level.mdfunc-command-query-separation.mdfunc-dry.mdfunc-minimize-arguments.md詳細
Robert C. Martin(Uncle Bob)のクリーンコードのベストプラクティス
Robert C. Martin の著書『Clean Code: A Handbook of Agile Software Craftsmanship』に基づく、包括的なソフトウェア開発の職人技ガイドです。2008年当時の助言が現在では適用されなくなった箇所には、現代的な修正を加えています。コードレビュー、リファクタリングの判断、新規開発の指針となるよう、影響度順に優先順位を付けた10カテゴリ、48のルールを収録しています。例は主に Java で示していますが、原則は言語に依存しません。
適用するタイミング
次のような場合に、これらのガイドラインを参照してください。
- 新しい関数、クラス、モジュールを書くとき
- 変数、関数、クラス、ファイルに名前を付けるとき
- 保守性の問題についてコードをレビューするとき
- 明瞭さを高めるため、既存のコードをリファクタリングするとき
- 単体テストを書く、または改善するとき
- サードパーティの依存関係をラップするとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | 意味のある名前 | CRITICAL | name- |
| 2 | 関数 | CRITICAL | func- |
| 3 | コメント | HIGH | cmt- |
| 4 | 書式 | HIGH | fmt- |
| 5 | エラー処理 | HIGH | err- |
| 6 | オブジェクトとデータ構造 | MEDIUM-HIGH | obj- |
| 7 | 境界 | MEDIUM-HIGH | bound- |
| 8 | クラスとシステム | MEDIUM-HIGH | class- |
| 9 | 単体テスト | MEDIUM | test- |
| 10 | 創発とシンプルな設計 | MEDIUM | emerge- |
クイックリファレンス
1. 意味のある名前(CRITICAL)
name-intention-revealing- 意図が伝わる名前を付けるname-avoid-disinformation- 誤解を招く名前を避けるname-meaningful-distinctions- 意味のある違いを表すname-pronounceable- 発音しやすい名前を付けるname-searchable- 検索しやすい名前を付けるname-avoid-encodings- 名前にエンコーディングを含めないname-class-noun- クラス名には名詞句を使うname-method-verb- メソッド名には動詞句を使う
2. 関数(CRITICAL)
func-small- 関数は小さく保つfunc-one-thing- 関数は一つのことだけを行うfunc-abstraction-level- 抽象化のレベルを一つに保つfunc-minimize-arguments- 関数の引数を最小限にするfunc-no-side-effects- 副作用を避けるfunc-command-query-separation- コマンドとクエリを分離するfunc-dry- 同じことを繰り返さない
3. コメント(HIGH)
cmt-express-in-code- コメントではなくコードで表現するcmt-explain-intent- 意図の説明にコメントを使うcmt-avoid-redundant- 冗長なコメントを避けるcmt-avoid-commented-out-code- コメントアウトされたコードを削除するcmt-warning-consequences- 結果への警告にコメントを使う
4. 書式(HIGH)
fmt-vertical-formatting- 読みやすさのために縦方向の書式を使うfmt-horizontal-alignment- 横方向の位置合わせを避けるfmt-team-rules- チームの書式ルールに従うfmt-indentation- インデントのルールを守る
5. エラー処理(HIGH)
err-use-exceptions- 正常系の処理とエラー処理を分離するerr-write-try-catch-first- 最初に try-catch-finally を記述するerr-provide-context- 例外にコンテキストを付与するerr-define-by-caller-needs- 呼び出し元のニーズに基づいて例外を定義するerr-avoid-null- null の返却と受け渡しを避ける
6. オブジェクトとデータ構造(MEDIUM-HIGH)
obj-data-abstraction- 抽象化によってデータを隠すobj-data-object-asymmetry- データとオブジェクトの非対称性を理解するobj-law-of-demeter- デメテルの法則に従うobj-avoid-hybrids- データとオブジェクトを組み合わせたハイブリッド構造を避けるobj-dto- データ転送には DTO を使用する
7. 境界(MEDIUM-HIGH)
bound-wrap-third-party- サードパーティ API をラップするbound-learning-tests- サードパーティコードの学習テストを記述する
8. クラスとシステム(MEDIUM-HIGH)
class-small- クラスを小さく保つclass-cohesion- クラスの凝集性を維持するclass-organize-for-change- 変更に対応できるようクラスを整理するclass-isolate-from-change- クラスを変更の影響から隔離するclass-separate-concerns- 構築と使用を分離する
9. 単体テスト(MEDIUM)
test-first-law- TDD の 3 つの法則に従うtest-keep-clean- テストをクリーンに保つtest-one-assert- 1 つのテストにつき 1 つの概念を検証するtest-first-principles- FIRST の原則に従うtest-build-operate-check- Build-Operate-Check パターンを使用する
10. 創発とシンプルな設計(MEDIUM)
emerge-simple-design- シンプルな設計の 4 つのルールに従うemerge-expressiveness- 表現力を最大限に高める
使用方法
詳しい説明とコード例については、各リファレンスファイルをお読みください。
- セクション定義 - カテゴリー構成と影響度
- ルールのテンプレート - 新しいルールを追加するためのテンプレート
リファレンスファイル
| ファイル | 説明 |
|---|---|
| references/_sections.md | カテゴリーの定義と順序 |
| assets/templates/_template.md | 新しいルール用のテンプレート |
| metadata.json | バージョンとリファレンス情報 |
コメント
Markdown 対応