---
name: naming-convention
when: '命名规范, 命名约定, 变量命名, 类命名, 接口命名, 表命名, 字段命名, API路径命名'
scope:
  - backend
  - frontend
products:
  - '*'
id: ka-pattern-naming-convention
asset_kind: pattern
lifecycle_status: active
authority: supporting
routes:
  - '*'
primary_triggers:
  - 命名规范
  - 命名约定
  - 变量命名
  - 类命名
  - 接口命名
  - 表命名
  - 字段命名
  - API路径命名
priority: P2
specificity: 3
version: 1.0.0
last_reviewed: '2026-05-22'
consumes: []
emits: []
secondary_triggers: []
negative_triggers: []
type: pattern
status: active
---

## 决策规则
- Java 类名使用 UpperCamelCase，方法/变量使用 lowerCamelCase，常量使用 UPPER_SNAKE_CASE
- 数据库表名使用 snake_case，字段名使用 snake_case，主键统一命名为 id
- API 路径使用 kebab-case 复数名词（如 /api/v1/user-orders），禁止在路径中使用动词
- 前端组件文件名使用 PascalCase，CSS 类名使用 kebab-case，路由路径使用 kebab-case
- 禁止使用无业务含义的命名（data、info、result、temp、list、item、obj）
- Boolean 变量/方法必须以 is/has/can/should 开头（如 isActive、hasPermission）
- 接口/抽象类命名应体现行为意图（如 UserRepository、PaymentService）
- 枚举类名使用名词，枚举值使用 UPPER_SNAKE_CASE
- 包名使用全小写点分隔（com.company.module.service），禁止下划线或大写
- 常量必须定义在常量类或枚举中，禁止散落在业务代码各处
- 方法名应为动词或动词短语（getUserById、calculateTotalAmount）
- 泛型类型参数使用大写单字母或简写（T、E、K、V、R、REQ、RESP）
- 配置项 key 使用点分隔的 kebab-case（spring.datasource.url）

## 验收项
- [AC-01] Java 类/方法/变量/常量命名风格一致
- [AC-02] 数据库表名/字段名统一 snake_case
- [AC-03] API 路径 kebab-case + 复数名词
- [AC-04] 前端组件 PascalCase、CSS kebab-case
- [AC-05] 无无含义命名（data/info/result/temp）
- [AC-06] Boolean 变量 is/has/can 前缀
- [AC-07] 方法名为动词短语
- [AC-08] 枚举值 UPPER_SNAKE_CASE
