6aspec 2.0.0-dev.23 → 2.0.0-dev.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,39 +1,133 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
3
|
-
globs:
|
|
4
|
-
alwaysApply:
|
|
2
|
+
description: 代码编写规范与质量标准
|
|
3
|
+
globs: "**/*.{java,js,ts,py,go,cpp,c,cs}"
|
|
4
|
+
alwaysApply: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
7
|
+
# 代码编写规范
|
|
8
|
+
|
|
9
|
+
## 🚨 红线规则(绝对禁止)
|
|
10
|
+
|
|
11
|
+
### 性能红线
|
|
12
|
+
- **禁止在循环中进行数据库查询**:避免N+1问题,使用批量查询或预加载
|
|
13
|
+
- **禁止在循环中进行网络请求**:使用批量API或异步处理
|
|
14
|
+
- **禁止在循环中进行文件I/O操作**:批量读写或使用缓存
|
|
15
|
+
- **禁止在热点代码路径中使用反射**:影响性能,考虑编译时生成或缓存
|
|
16
|
+
- **禁止在生产环境使用System.out.println调试**:使用日志框架
|
|
17
|
+
|
|
18
|
+
### 安全红线
|
|
19
|
+
- **禁止直接拼接SQL语句**:必须使用参数化查询防止SQL注入
|
|
20
|
+
- **禁止在日志中输出敏感信息**:密码、token、身份证号等
|
|
21
|
+
- **禁止硬编码密钥和敏感配置**:使用配置文件或环境变量
|
|
22
|
+
- **禁止信任用户输入**:所有外部输入必须验证和过滤
|
|
23
|
+
- **禁止使用弱加密算法**:MD5、SHA1等已不安全
|
|
24
|
+
|
|
25
|
+
### 架构红线
|
|
26
|
+
- **禁止循环依赖**:包、模块、类之间不能相互依赖
|
|
27
|
+
- **禁止跨层直接调用**:Controller不能直接调用DAO
|
|
28
|
+
- **禁止在实体类中包含业务逻辑**:保持实体类的纯净性
|
|
29
|
+
- **禁止在静态代码块中进行复杂操作**:可能导致类加载问题
|
|
30
|
+
- **禁止捕获异常后不处理**:空catch块是代码异味
|
|
31
|
+
|
|
32
|
+
## 🔒 安全规范
|
|
33
|
+
|
|
34
|
+
### 输入验证
|
|
35
|
+
- **参数校验**:所有API入参必须校验
|
|
36
|
+
- **数据过滤**:防止XSS、SQL注入等攻击
|
|
37
|
+
- **权限检查**:每个操作都要验证用户权限
|
|
38
|
+
- **敏感数据处理**:加密存储,脱敏展示
|
|
39
|
+
|
|
40
|
+
### 日志安全
|
|
41
|
+
- **敏感信息脱敏**:密码、token等不能明文记录
|
|
42
|
+
- **操作审计**:关键操作必须记录审计日志
|
|
43
|
+
- **错误信息**:不暴露系统内部信息给用户
|
|
44
|
+
|
|
45
|
+
## ⚡ 性能优化
|
|
46
|
+
|
|
47
|
+
### 数据库优化
|
|
48
|
+
- **索引使用**:查询字段必须有合适的索引
|
|
49
|
+
- **批量操作**:使用批量插入/更新减少数据库交互
|
|
50
|
+
- **连接池管理**:合理配置数据库连接池
|
|
51
|
+
- **查询优化**:避免全表扫描,使用分页查询
|
|
13
52
|
|
|
14
|
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
53
|
+
### 缓存策略
|
|
54
|
+
- **多级缓存**:本地缓存 + 分布式缓存
|
|
55
|
+
- **缓存更新**:及时更新或失效过期数据
|
|
56
|
+
- **缓存穿透**:防止恶意查询不存在的数据
|
|
57
|
+
- **缓存雪崩**:设置随机过期时间
|
|
19
58
|
|
|
59
|
+
### 算法复杂度
|
|
60
|
+
- **时间复杂度**:优先选择O(1)、O(log n)算法
|
|
61
|
+
- **空间复杂度**:避免不必要的内存占用
|
|
62
|
+
- **数据结构选择**:根据使用场景选择合适的数据结构
|
|
20
63
|
|
|
21
|
-
## 编码规范
|
|
22
|
-
- **命名规范**:类名、方法名、变量名清晰表达意图
|
|
23
|
-
- **代码结构**:合理的包结构和类层次
|
|
24
|
-
- **注释规范**:必要的类和方法注释
|
|
25
|
-
- **代码复用**:避免重复代码,提取公共方法
|
|
64
|
+
## 📝 编码规范
|
|
26
65
|
|
|
66
|
+
### 命名规范
|
|
67
|
+
- **类名**:大驼峰命名,名词,表达清晰意图
|
|
68
|
+
- **方法名**:小驼峰命名,动词开头,表达具体行为
|
|
69
|
+
- **变量名**:小驼峰命名,避免缩写,见名知意
|
|
70
|
+
- **常量名**:全大写,下划线分隔
|
|
71
|
+
- **包名**:全小写,层次清晰
|
|
27
72
|
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
73
|
+
### 代码结构
|
|
74
|
+
- **包结构**:按功能模块划分,层次清晰
|
|
75
|
+
- **类大小**:单个类不超过500行
|
|
76
|
+
- **方法长度**:单个方法不超过50行
|
|
77
|
+
- **参数个数**:方法参数不超过5个
|
|
78
|
+
- **嵌套层次**:代码嵌套不超过4层
|
|
33
79
|
|
|
80
|
+
### 注释规范
|
|
81
|
+
- **类注释**:说明类的职责和使用场景
|
|
82
|
+
- **方法注释**:说明参数、返回值、异常
|
|
83
|
+
- **复杂逻辑注释**:解释为什么这样做
|
|
84
|
+
- **TODO注释**:标记待完成的工作
|
|
34
85
|
|
|
35
|
-
##
|
|
36
|
-
|
|
86
|
+
## 🏗️ 设计原则
|
|
87
|
+
|
|
88
|
+
### SOLID原则
|
|
89
|
+
- **单一职责原则**:一个类只负责一个功能领域
|
|
90
|
+
- **开闭原则**:对扩展开放,对修改关闭
|
|
91
|
+
- **里氏替换原则**:子类可以替换父类
|
|
92
|
+
- **接口隔离原则**:使用多个专门的接口
|
|
93
|
+
- **依赖倒置原则**:依赖抽象而不是具体实现
|
|
94
|
+
|
|
95
|
+
### 其他原则
|
|
96
|
+
- **DRY原则**:不重复自己,提取公共代码
|
|
97
|
+
- **KISS原则**:保持简单,避免过度设计
|
|
98
|
+
- **YAGNI原则**:你不会需要它,不做过度设计
|
|
99
|
+
- **最少知识原则**:对象应该对其他对象有最少的了解
|
|
100
|
+
|
|
101
|
+
## 🔄 重构策略
|
|
102
|
+
|
|
103
|
+
### 重构时机
|
|
104
|
+
- **新功能开发时**:同步重构相关代码
|
|
105
|
+
- **Bug修复时**:改善代码结构
|
|
106
|
+
- **代码审查时**:发现问题及时重构
|
|
107
|
+
- **性能优化时**:重构性能瓶颈代码
|
|
108
|
+
|
|
109
|
+
### 重构原则
|
|
110
|
+
- **小步快跑**:每次重构范围要小
|
|
37
111
|
- **测试保护**:重构前确保测试覆盖
|
|
38
|
-
-
|
|
39
|
-
-
|
|
112
|
+
- **持续集成**:频繁提交,及时发现问题
|
|
113
|
+
- **技术债务管理**:定期评估和偿还
|
|
114
|
+
|
|
115
|
+
## ✅ 检查清单
|
|
116
|
+
|
|
117
|
+
### 代码提交前检查
|
|
118
|
+
- [ ] 是否违反红线规则
|
|
119
|
+
- [ ] 是否有安全漏洞
|
|
120
|
+
- [ ] 是否有性能问题
|
|
121
|
+
- [ ] 命名是否规范
|
|
122
|
+
- [ ] 是否有充分的测试
|
|
123
|
+
- [ ] 是否有必要的注释
|
|
124
|
+
- [ ] 是否符合团队编码风格
|
|
125
|
+
|
|
126
|
+
### 代码审查检查
|
|
127
|
+
- [ ] 业务逻辑是否正确
|
|
128
|
+
- [ ] 异常处理是否完善
|
|
129
|
+
- [ ] 边界条件是否考虑
|
|
130
|
+
- [ ] 是否有代码重复
|
|
131
|
+
- [ ] 是否符合设计原则
|
|
132
|
+
- [ ] 是否有技术债务
|
|
133
|
+
- [ ] 文档是否需要更新
|
|
@@ -50,7 +50,26 @@
|
|
|
50
50
|
- 保持变更最小化和聚焦
|
|
51
51
|
- 遵循技术方案设计
|
|
52
52
|
|
|
53
|
-
d.
|
|
53
|
+
d. **质量控制检查**
|
|
54
|
+
**必须严格遵循代码规范**:`.6aspec/rules/biz/code.md`,并使用其中的"检查清单"章节进行自我验证。
|
|
55
|
+
|
|
56
|
+
**重点关注以下红线规则(零容忍):**
|
|
57
|
+
- [ ] 循环中的数据库查询、网络请求、文件I/O操作
|
|
58
|
+
- [ ] SQL字符串拼接、敏感信息硬编码、弱加密算法使用
|
|
59
|
+
- [ ] 循环依赖、跨层直接调用、空catch块
|
|
60
|
+
|
|
61
|
+
**棕地需求特别检查:**
|
|
62
|
+
- [ ] 修改是否符合现有代码风格和架构模式
|
|
63
|
+
- [ ] 是否引入了新的技术债务
|
|
64
|
+
- [ ] 是否影响了现有功能的稳定性
|
|
65
|
+
- [ ] 是否遵循了设计文档中的技术决策
|
|
66
|
+
|
|
67
|
+
**技术检查:**
|
|
68
|
+
- [ ] 运行相关测试确保无回归
|
|
69
|
+
- [ ] 检查代码编译和语法错误
|
|
70
|
+
- [ ] 验证修改范围最小化
|
|
71
|
+
|
|
72
|
+
e. **标记任务完成**
|
|
54
73
|
- 在任务文件中更新状态:`📋 待开始` → `✅ 已完成`
|
|
55
74
|
- 在 `04-tasks-overview.md` 中更新任务状态:`- [ ]` → `- [x]`
|
|
56
75
|
- 更新 `status.json` 中的任务计数
|
|
@@ -66,6 +66,21 @@ alwaysApply: false
|
|
|
66
66
|
## 2. 质量控制 (Quality Control)
|
|
67
67
|
|
|
68
68
|
在输出代码后,必须进行自我审查:
|
|
69
|
+
|
|
70
|
+
### 2.1 代码规范遵循与检查
|
|
71
|
+
**必须严格遵循代码规范**:`.6aspec/rules/biz/code.md`,并使用其中的"检查清单"章节进行自我验证。
|
|
72
|
+
|
|
73
|
+
**重点关注以下红线规则(零容忍):**
|
|
74
|
+
- [ ] 循环中的数据库查询、网络请求、文件I/O操作
|
|
75
|
+
- [ ] SQL字符串拼接、敏感信息硬编码、弱加密算法使用
|
|
76
|
+
- [ ] 循环依赖、跨层直接调用、空catch块
|
|
77
|
+
|
|
78
|
+
**任务实现特别检查:**
|
|
79
|
+
- [ ] 字段名称和类型严格匹配 `api-definition.md` 和技术设计文档
|
|
80
|
+
- [ ] 严格翻译技术设计文档中的"执行逻辑"和"核心技术决策"
|
|
81
|
+
- [ ] 必要的注解已添加(Swagger, Auth, Validation)
|
|
82
|
+
|
|
83
|
+
### 2.2 技术检查
|
|
69
84
|
1. **Lint 检查**:运行 `read_lints` 检查新文件,修复所有 Import 错误和语法错误。
|
|
70
85
|
2. **不写测试**:严禁编写 `src/test` 下的单元测试代码(除非用户明确要求)。
|
|
71
86
|
3. **不修改无关文件**:严禁修改与本任务无关的现有代码(除非是必要的 Entity 关联更新)。
|