关于 clean-code
面向软件开发者的 Clean Code 实践指南,基于 Robert C. Martin 的著作并纳入现代修订,规则适用于多种编程语言。
主要功能
- 01涵盖 10 类代码实践
- 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)的 Clean Code 最佳实践
这是一份全面的软件工艺指南,基于 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-finallyerr-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- 封装第三方 APIbound-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 三定律test-keep-clean- 保持测试整洁test-one-assert- 每个测试只验证一个概念test-first-principles- 遵循 FIRST 原则test-build-operate-check- 使用 Build-Operate-Check 模式
10. 涌现与简单设计(MEDIUM)
emerge-simple-design- 遵循简单设计的四项规则emerge-expressiveness- 最大限度地提高表达力
如何使用
阅读各个参考文件,了解详细说明和代码示例:
参考文件
| 文件 | 描述 |
|---|---|
| references/_sections.md | 类别定义和排序 |
| assets/templates/_template.md | 新规则模板 |
| metadata.json | 版本和参考信息 |
评论
支持 Markdown