关于 ddd:software-architecture
ddd:software-architecture 是一项基于 Clean Architecture 和 Domain Driven Design 的开发技能,提供代码质量与架构指导,适用于需要明确模块边界、复用代码和领域化命名的软件开发任务。
主要功能
- 01遵循 Clean Architecture 和 DDD
- 02分离领域与基础设施
- 03优先考虑现有库
- 04定义聚焦的用例和模块
- 05制定代码结构与命名规范
适用场景
- 01设计业务逻辑与基础设施的边界
- 02评估使用库还是自定义代码
- 03围绕领域概念组织模块
- 04检查代码复杂度与关注点分离
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ w95/ awesome-claude-corporate-skills --skill ddd:software-architecture安装后在 Claude Code 中输入/ddd:software-architecture确认已加载。
详细介绍
软件架构开发技能
此技能为注重质量的软件开发和架构提供指导。它基于整洁架构和领域驱动设计原则。
代码风格规则
通用原则
- 尽早返回模式:尽可能始终使用尽早返回,而非嵌套条件,以提高可读性
- 通过创建可复用的函数和模块来避免代码重复
- 将较长(超过 80 行代码)的组件和函数拆分成多个较小的组件和函数。如果它们无法在其他地方使用,则保留在同一文件中。但如果文件超过 200 行代码,则应拆分成多个文件。
- 尽可能使用箭头函数,而非函数声明
最佳实践
库优先方法
- 编写自定义代码之前,务必先搜索现有解决方案
- 在 npm 中查找可解决该问题的现有库
- 评估现有服务 / SaaS 解决方案
- 考虑用于常见功能的第三方 API
- 使用库,而不是自行编写工具函数或辅助函数。例如,使用
cockatiel,而不是自行编写重试逻辑。 - 适合编写自定义代码的情况:
- 领域特有的业务逻辑
- 有特殊要求的性能关键路径
- 外部依赖过于臃肿
- 需要完全掌控的安全敏感代码
- 经过全面评估后,现有解决方案仍无法满足要求
架构与设计
- 整洁架构与 DDD 原则:
- 遵循领域驱动设计和通用语言
- 将领域实体与基础设施关注点分离
- 使业务逻辑不依赖于框架
- 明确界定用例,并使其保持隔离
- 命名约定:
- 避免使用通用名称:
utils、helpers、common、shared - 使用领域专用名称:
OrderCalculator、UserAuthenticator、InvoiceGenerator - 遵循限界上下文的命名模式
- 每个模块都应有单一且明确的用途
- 避免使用通用名称:
- 关注点分离:
- 不要将业务逻辑与 UI 组件混在一起
- 不要在控制器中编写数据库查询
- 在上下文之间保持清晰的边界
- 确保职责得到适当分离
应避免的反模式
- NIH(非我发明综合征):
- Auth0 / Supabase 已存在时,不要自建身份验证
- 不要自行编写状态管理,而应使用 Redux / Zustand
- 不要自建表单验证,而应使用成熟的库
- 糟糕的架构选择:
- 将业务逻辑与 UI 组件混在一起
- 直接在控制器中编写数据库查询
- 缺乏明确的关注点分离
- 通用命名反模式:
- 包含 50 个互不相关函数的
utils.js - 作为杂物堆的
helpers/misc.js - 用途不明确的
common/shared.js
- 包含 50 个互不相关函数的
- 请记住:每一行自定义代码都是一项需要维护、测试和编写文档的负担
评论
支持 Markdown