mcpField
S
system-design

system-design

github.com/qodex-ai开发48217 次安装43 周前更新
代码仓库

关于 system-design

system-design 是一项软件开发 Skill,指导开发者应用 Clean Architecture 和领域驱动设计原则。内容涵盖代码风格、架构实践及应避免的反模式,适用于设计可维护系统。

主要功能

  1. 01Clean Architecture 与 DDD 指导
  2. 02优先提前返回并减少嵌套
  3. 03优先采用现有库的建议
  4. 04领域专属命名规范
  5. 05分离业务逻辑与基础设施

适用场景

  1. 01规划领域层与基础设施的边界
  2. 02检查代码中的可维护性问题
  3. 03在自定义实现前评估现有库

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/qodex-ai/ai-agent-skills --skill system-design

安装后在 Claude Code 中输入/system-design确认已加载。

详细介绍

软件架构开发技能

此技能为注重质量的软件开发与架构设计提供指导,基于整洁架构和领域驱动设计原则。

代码风格规则

通用原则
  • 提前返回模式:尽可能始终使用提前返回,而不是嵌套条件,以提高可读性
  • 通过创建可复用的函数和模块避免代码重复
  • 将较长(超过 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
  • 请记住:每一行自定义代码都意味着维护、测试和文档方面的负担
  • 错误处理要规范,并为 catch 块指定类型
  • 将复杂逻辑拆分为更小、可复用的函数
  • 避免深层嵌套(最多 3 层)
  • 尽可能让函数职责单一且少于 50 行
  • 尽可能让文件职责单一且少于 200 行代码

评论

支持 Markdown