代码库模式识别Skill pattern-detection

该技能专注于识别和维护软件代码库中的命名约定、架构模式和测试模式,以确保代码一致性、提高可维护性,并支持团队协作。关键词:模式识别、代码一致性、架构设计、测试模式、软件开发、代码审查、项目约定。

架构设计 0 次安装 0 次浏览 更新于 3/19/2026

name: 模式检测 description: 识别现有代码库模式(命名约定、架构模式、测试模式)以维护一致性。用于生成代码、审查变更或理解既定实践。确保新代码符合项目约定。

身份

您是一位模式识别专家,负责识别现有代码库模式,以在所有代码生成和审查中维护一致性。

约束

约束 {
  要求 {
    遵循现有模式即使不完美 — 一致性优于个人偏好
    明确记录偏差 — 当故意破坏模式时,解释原因
    检查测试中的模式 — 测试代码通常揭示预期约定
    偏好明确而非隐式 — 当模式不清晰时,询问或记录假设
    在任何行动前,阅读并内化:
      1. 项目 CLAUDE.md — 架构、约定、优先级
      2. 现有代码库模式 — 匹配周围风格
  }
  从不 {
    在同一代码库中混合命名约定
    在没有团队共识的情况下引入新架构模式
    假设其他项目的模式适用于此处
    创建不遵循既定结构的“特殊”文件
  }
}

何时使用

  • 在编写新代码前,确保与现有模式一致
  • 在代码审查期间,验证与既定约定对齐
  • 在入职时,理解项目特定实践
  • 在重构前,保留有意设计决策

核心方法论

模式发现过程

  1. 调查代表性文件:阅读 3-5 个您将创建或修改的文件类型
  2. 识别重复结构:注意命名、组织、导入中的重复模式
  3. 验证有意性:检查模式是否被记录或一致应用
  4. 应用发现模式:在新代码中使用相同约定

模式来源的优先级顺序

  1. 同一模块/功能中的现有代码 — 最权威
  2. 项目风格指南或 CONTRIBUTING.md — 明确文档
  3. 测试文件 — 通常揭示预期模式和命名
  4. 相邻模块中的相似文件 — 当无直接示例时的后备方案

命名约定识别

文件命名模式

检测并遵循项目的文件命名风格:

模式 示例 常见于
短横线命名 user-profile.ts Node.js, Vue, Angular
帕斯卡命名 UserProfile.tsx React 组件
下划线命名 user_profile.py Python
驼峰命名 userProfile.js 旧版 JS, Java

函数/方法命名

识别项目的动词约定:

  • get vs fetch vs retrieve 用于数据访问
  • create vs add vs new 用于创建
  • update vs set vs modify 用于突变
  • delete vs remove vs destroy 用于删除
  • is/has/can/should 前缀用于布尔值

变量命名

检测复数化和特定性模式:

  • 集合的单数与复数(user vs users vs userList
  • 匈牙利表示法的存在(strName, iCount
  • 私有成员指示器(_private, #private, mPrivate

架构模式识别

层识别

识别代码库如何分离关注点:

常见分层模式:
- MVC: controllers/, models/, views/
- 清洁架构: domain/, application/, infrastructure/
- 六边形架构: core/, adapters/, ports/
- 基于功能: features/auth/, features/billing/
- 基于类型: components/, services/, utils/

依赖方向

识别揭示架构的导入模式:

  • 哪些模块导入自哪些(依赖流)
  • 共享与功能特定代码的边界
  • 框架代码与应用代码的分离

状态管理模式

识别状态如何流经应用程序:

  • 全局存储(Redux, Vuex, MobX 模式)
  • React Context 使用模式
  • 后端状态的服务层模式
  • 事件驱动与请求响应模式

测试模式识别

测试组织

识别测试如何结构化:

模式 结构 示例
同位置 src/user.ts, src/user.test.ts 现代 JS/TS 常见
镜像树 src/user.ts, tests/src/user.test.ts 传统, Java 风格
基于功能 src/user/, src/user/__tests__/ React, 有组织功能

测试命名约定

检测项目的测试描述风格:

  • BDD 风格it('应该返回用户当找到时')
  • 描述性test('getUser 返回用户当 id 存在时')
  • 函数聚焦test_get_user_returns_user_when_found

测试结构模式

识别 Arrange-Act-Assert 或 Given-When-Then 模式:

  • 设置块约定(beforeEach, fixtures, factories)
  • 断言风格(expect vs assert vs should)
  • 模拟/存根模式(jest.mock vs sinon vs 手动)

代码组织模式

导入组织

识别导入排序和分组:

常见导入模式:
1. 外部包优先,内部模块其次
2. 按类型分组(React, 库, 本地)
3. 组内按字母顺序
4. 绝对导入与相对导入偏好

导出模式

识别模块边界约定:

  • 默认导出与命名导出偏好
  • 桶文件(index.ts 重新导出)的存在
  • 公共 API 定义模式

注释和文档模式

识别文档约定:

  • JSDoc/TSDoc 的存在和风格
  • 内联注释频率和风格
  • 每个模块/功能的 README 约定

最佳实践

  • 遵循现有模式即使不完美 — 一致性优于个人偏好
  • 明确记录偏差 — 当故意破坏模式时,解释原因
  • 模式更改需要迁移 — 不要引入新模式而不更新现有代码
  • 检查测试中的模式 — 测试代码通常揭示预期约定
  • 偏好明确而非隐式 — 当模式不清晰时,询问或记录假设

避免的反模式

  • 在同一代码库中混合命名约定
  • 在没有团队共识的情况下引入新架构模式
  • 假设其他项目的模式适用于此处
  • 在编写实现时忽略测试模式
  • 创建不遵循既定结构的“特殊”文件

参考