关于 clean-architecture
面向软件架构师和开发者的 Clean Architecture 指南,整理了按架构影响排序的规则,用于设计、审查和重构可维护、可测试的系统。
主要功能
- 01涵盖 8 类架构规则
- 02按影响优先级排列规则
- 03提供依赖方向与实体设计建议
- 04包含边界、适配器和框架隔离指导
- 05涉及分层测试设计
适用场景
- 01规划新系统或模块结构
- 02审查代码中的架构违规
- 03重构层间耦合的系统
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill clean-architecture安装后在 Claude Code 中输入/clean-architecture确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
metadata.jsonassets/templates/_template.mdreferences/_sections.mdadapt-anti-corruption-layer.mdadapt-controller-thin.mdadapt-gateway-abstraction.mdadapt-mapper-translation.mdadapt-presenter-formats.mdbound-boundary-cost-awareness.mdbound-defer-decisions.mdbound-humble-object.mdbound-main-component.mdbound-partial-boundaries.mdbound-service-internal-architecture.mdcomp-common-closure.mdcomp-common-reuse.mdcomp-reuse-release-equivalence.mdcomp-screaming-architecture.mdcomp-stable-dependencies.mddep-acyclic-dependencies.mddep-data-crossing-boundaries.mddep-interface-ownership.mddep-inward-only.mddep-no-framework-imports.mddep-stable-abstractions.mdentity-encapsulate-invariants.mdentity-no-persistence-awareness.mdentity-pure-business-rules.mdentity-rich-not-anemic.mdentity-value-objects.md详细介绍
整洁架构最佳实践
设计可维护、可测试软件系统的整洁架构原则综合指南。基于 Robert C. Martin 的《Clean Architecture: A Craftsman's Guide to Software Structure and Design》。包含 8 个类别中的 42 条规则,并按架构影响排序。
适用场景
在以下情况下参考这些指南:
- 设计新的软件系统或模块
- 规划各层之间的依赖关系
- 定义业务逻辑与基础设施之间的边界
- 审查代码中的架构违规
- 重构耦合系统,使其结构更加清晰
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 依赖方向 | 严重 | dep- |
| 2 | 实体设计 | 严重 | entity- |
| 3 | 用例隔离 | 高 | usecase- |
| 4 | 组件内聚性 | 高 | comp- |
| 5 | 边界定义 | 中高 | bound- |
| 6 | 接口适配器 | 中 | adapt- |
| 7 | 框架隔离 | 中 | frame- |
| 8 | 测试架构 | 低至中 | test- |
快速参考
1. 依赖方向(严重)
dep-inward-only- 源代码依赖只能指向内层dep-interface-ownership- 接口应属于客户端,而非实现者dep-no-framework-imports- 避免在内层导入框架dep-data-crossing-boundaries- 使用简单数据结构跨越边界dep-acyclic-dependencies- 消除组件之间的循环依赖dep-stable-abstractions- 依赖稳定抽象,而非易变的具体实现
2. 实体设计(严重)
entity-pure-business-rules- 实体只包含企业业务规则entity-no-persistence-awareness- 实体不得了解自身如何持久化entity-encapsulate-invariants- 在实体内部封装业务不变量entity-value-objects- 使用值对象表示领域概念entity-rich-not-anemic- 构建丰富的领域模型,而非贫血的数据结构
3. 用例隔离(高)
usecase-single-responsibility- 每个用例只有一个变更理由usecase-input-output-ports- 为用例定义输入端口和输出端口usecase-orchestrates-not-implements- 用例负责编排实体,而非实现业务规则usecase-no-presentation-logic- 用例不得包含表示逻辑usecase-explicit-dependencies- 在构造函数中显式声明所有依赖usecase-transaction-boundary- 由用例定义事务边界
4. 组件内聚性(高)
comp-screaming-architecture- 结构应彰显领域,而非框架comp-common-closure- 将一起变更的类归为一组comp-common-reuse- 避免迫使客户端依赖未使用的代码comp-reuse-release-equivalence- 将组件作为内聚单元发布comp-stable-dependencies- 沿着稳定性方向建立依赖
5. 边界定义(中高)
bound-humble-object- 在架构边界使用简单对象bound-partial-boundaries- 完全分离为时过早时,使用部分边界bound-boundary-cost-awareness- 权衡边界成本与认知不足的成本bound-main-component- 将 main 视为应用程序的插件bound-defer-decisions- 延后框架和数据库决策bound-service-internal-architecture- 服务必须具备内部整洁架构
6. 接口适配器(中)
adapt-controller-thin- 保持控制器精简adapt-presenter-formats- Presenter 为视图格式化数据adapt-gateway-abstraction- Gateway 隐藏外部系统细节adapt-mapper-translation- 使用 Mapper 在各层之间转换数据adapt-anti-corruption-layer- 为外部系统构建防腐层
7. 框架隔离(中)
frame-domain-purity- 领域层不依赖任何框架frame-orm-in-infrastructure- 将 ORM 的使用限制在基础设施层frame-web-in-infrastructure- Web 框架相关事项应留在接口层frame-di-container-edge- 依赖注入容器应位于边界frame-logging-abstraction- 通过领域接口抽象日志记录
8. 测试架构(低至中)
test-tests-are-architecture- 测试是系统架构的一部分test-testable-design- 从一开始就为可测试性而设计test-layer-isolation- 隔离测试每一层test-boundary-verification- 通过测试验证架构边界
使用方法
阅读各个参考文件,了解详细说明和代码示例:
参考文件
| 文件 | 描述 |
|---|---|
| references/_sections.md | 类别定义和排序 |
| assets/templates/_template.md | 新规则模板 |
| metadata.json | 版本和参考信息 |
评论
支持 Markdown