最佳实践
本章总结 AI 辅助编程的最佳实践,帮助你避免常见陷阱,提高开发效率和代码质量。
核心原则
原则一:始终审查 AI 生成的代码
AI 生成的代码不是最终答案,而是起点。
markdown
// ❌ 错误做法
直接复制粘贴 AI 生成的代码,不做任何检查
// ✅ 正确做法
1. 通读代码,理解逻辑
2. 检查安全性问题
3. 验证边界条件处理
4. 确认符合项目规范
5. 运行测试验证功能
```text
### 原则二:保持上下文一致性
在与 AI 的对话中保持上下文的连贯性:
```markdown
// ❌ 错误做法
每次对话都是独立的,不提供项目背景
// ✅ 正确做法
在项目开始时建立上下文:
"这是一个 Vue 3 + TypeScript 项目,使用 Element Plus 组件库,
代码风格遵循 ESLint 规则,请记住这些信息。"
```text
### 原则三:小步迭代
不要期望一次生成完美代码,采用迭代方式:
```markdown
// ❌ 错误做法
"帮我写一个完整的用户管理系统,包含注册、登录、权限管理..."
// ✅ 正确做法
分步骤进行:
1. "创建用户数据模型"
2. "实现用户注册接口"
3. "实现用户登录接口"
4. "添加权限验证中间件"
```text
### 原则四:明确约束条件
提供清晰的技术约束和业务约束:
```markdown
// ❌ 错误做法
"写一个搜索功能"
// ✅ 正确做法
"实现搜索功能,要求:
- 技术栈:Vue 3 + TypeScript
- 搜索防抖:300ms
- 支持关键词和分类筛选
- 使用现有的 searchApi 接口
- 返回结果分页显示"
```text
## 代码质量实践
### 实践一:要求类型安全
```markdown
// 提示词示例
"请使用 TypeScript 实现,要求:
- 所有变量和函数都有明确的类型定义
- 不使用 any 类型
- 接口和类型定义放在单独的 types.ts 文件中"
```text
### 实践二:要求错误处理
```markdown
// 提示词示例
"请添加完整的错误处理:
- 使用 try-catch 捕获异步错误
- 验证输入参数
- 处理边界情况(空值、越界等)
- 返回有意义的错误信息"
```text
### 实践三:要求代码注释
```markdown
// 提示词示例
"请添加代码注释:
- 函数注释说明功能、参数、返回值
- 复杂逻辑添加行内注释
- 使用项目统一的注释格式(JSDoc)"
```text
### 实践四:要求测试覆盖
```markdown
// 提示词示例
"请为以下代码生成单元测试:
- 使用 Jest 测试框架
- 覆盖正常流程和异常流程
- 测试边界条件
- 目标覆盖率 80% 以上"
```text
## 安全实践
### 实践一:输入验证
```markdown
// 提示词示例
"请确保所有用户输入都经过验证:
- 使用验证库(如 Joi、Zod)
- 验证数据类型和格式
- 防止 SQL 注入和 XSS 攻击
- 限制输入长度"
```text
### 实践二:敏感数据处理
```markdown
// 提示词示例
"请确保敏感数据的安全:
- 密码使用 bcrypt 加密存储
- 不在日志中输出敏感信息
- 不在响应中返回敏感字段
- 使用环境变量存储密钥"
```text
### 实践三:权限控制
```markdown
// 提示词示例
"请添加权限控制:
- 验证用户身份
- 检查用户角色和权限
- 防止越权访问
- 记录操作日志"
```text
## 性能实践
### 实践一:数据库优化
```markdown
// 提示词示例
"请优化数据库查询:
- 避免 N+1 查询问题
- 使用索引优化
- 添加查询缓存
- 使用分页查询大数据集"
```text
### 实践二:前端优化
```markdown
// 提示词示例
"请优化前端性能:
- 使用懒加载
- 添加防抖和节流
- 使用虚拟列表处理大数据
- 优化图片和资源加载"
```text
### 实践三:缓存策略
```markdown
// 提示词示例
"请实现缓存策略:
- 使用 Redis 缓存热点数据
- 设置合理的过期时间
- 实现缓存更新机制
- 处理缓存穿透和雪崩"
```text
## 协作实践
### 实践一:代码风格统一
```markdown
// 提示词示例
"请遵循项目的代码风格:
- 使用 2 空格缩进
- 使用单引号
- 使用 camelCase 命名
- 每行不超过 100 字符
参考项目中的 .eslintrc 配置"
```text
### 实践二:文档更新
```markdown
// 提示词示例
"请更新相关文档:
- API 文档说明接口变更
- README 更新使用说明
- 添加必要的代码注释"
```text
### 实践三:提交规范
```markdown
// 提示词示例
"请生成符合规范的 commit 信息:
- 使用 Conventional Commits 格式
- 格式:<type>(<scope>): <subject>
- 类型:feat/fix/docs/style/refactor/test/chore
- subject 使用中文描述"
```text
## 常见陷阱
### 陷阱一:过度信任 AI
**问题**:盲目接受 AI 生成的代码,不做审查
**后果**:
- 引入安全漏洞
- 代码逻辑错误
- 性能问题
- 维护困难
**解决**:
```markdown
1. 始终审查 AI 生成的代码
2. 运行测试验证功能
3. 使用代码审查工具检查
4. 请团队成员 review
```text
### 陷阱二:忽略上下文
**问题**:每次对话都是独立的,不提供项目背景
**后果**:
- 代码风格不一致
- 技术选型冲突
- 重复造轮子
**解决**:
```markdown
1. 在项目开始时建立上下文
2. 提供项目结构和技术栈信息
3. 引用现有代码作为示例
4. 使用项目的代码风格指南
```text
### 陷阱三:一次性生成大量代码
**问题**:期望一次生成完整功能
**后果**:
- 代码质量难以控制
- 问题难以定位
- 调试困难
**解决**:
```markdown
1. 分步骤生成代码
2. 每步验证后再继续
3. 保持功能模块化
4. 及时测试和审查
```text
### 陷阱四:忽略测试
**问题**:只关注功能实现,不编写测试
**后果**:
- 代码质量无法保证
- 后期维护困难
- 重构风险高
**解决**:
```markdown
1. 要求 AI 同时生成测试代码
2. 保持测试覆盖率
3. 测试驱动开发(TDD)
4. 定期运行测试
```text
### 陷阱五:不处理边界情况
**问题**:只考虑正常流程,忽略异常情况
**后果**:
- 程序崩溃
- 数据丢失
- 安全漏洞
**解决**:
```markdown
1. 明确要求处理边界情况
2. 提供边界条件示例
3. 测试异常场景
4. 添加错误处理和日志
```text
## 效率提升技巧
### 技巧一:建立提示词模板库
为常见任务建立标准模板:
```markdown
## API 开发模板
- 功能描述
- 技术栈
- 接口规范
- 数据模型
- 错误处理
## 组件开发模板
- 组件功能
- Props 定义
- 事件定义
- 样式要求
- 使用示例
```text
### 技巧二:使用代码片段
保存常用的代码片段,提高复用:
```markdown
## 常用片段
- 认证中间件
- 错误处理包装器
- 分页查询模板
- 日志记录模板
```text
### 技巧三:利用项目上下文
让 AI 了解项目结构:
```markdown
"项目结构如下:
- src/api: API 接口
- src/components: Vue 组件
- src/utils: 工具函数
- src/types: 类型定义
请按照这个结构组织代码。"
```text
### 技巧四:批量处理相似任务
对于相似的任务,可以批量处理:
```markdown
"请为以下 5 个接口生成 CRUD 操作:
1. User
2. Product
3. Order
4. Category
5. Comment
每个接口包含:创建、读取、更新、删除操作。"
```text
## 工作流优化
### 优化一:建立检查清单
```markdown
## 代码提交前检查清单
- [ ] 代码已审查
- [ ] 测试已通过
- [ ] 类型检查无错误
- [ ] 代码已格式化
- [ ] 注释已完善
- [ ] 文档已更新
```text
### 优化二:使用 Git Hooks
```markdown
// pre-commit hook
- 运行 lint 检查
- 运行类型检查
- 运行单元测试
// commit-msg hook
- 验证 commit 信息格式
```text
### 优化三:持续集成
```markdown
// CI 流程
1. 代码检查(lint、类型检查)
2. 单元测试
3. 集成测试
4. 构建验证
5. 部署(可选)
```text
## 团队协作建议
### 建议一:建立 AI 使用规范
```markdown
## 团队 AI 使用规范
### 允许的场景
- 生成代码框架
- 编写测试用例
- 代码重构建议
- 文档生成
### 需要审查的场景
- 核心业务逻辑
- 安全相关代码
- 性能关键代码
### 禁止的场景
- 直接提交未审查的代码
- 在生产环境直接使用
- 处理敏感数据时完全依赖 AI
```text
### 建议二:共享提示词库
```markdown
## 团队提示词库
建立共享的提示词库,包含:
- 常用功能模板
- 代码审查检查清单
- 安全审查要点
- 性能优化建议
```text
### 建议三:定期复盘
```markdown
## AI 辅助编程复盘
定期讨论:
- 哪些提示词效果好
- 遇到了哪些问题
- 如何改进工作流程
- 分享成功案例
```text
## 小结
AI 辅助编程的最佳实践:
1. **始终审查**:AI 生成的代码必须经过审查
2. **小步迭代**:分步骤生成,逐步完善
3. **明确约束**:提供清晰的技术和业务约束
4. **保持上下文**:让 AI 了解项目背景
5. **注重质量**:类型安全、错误处理、测试覆盖
6. **关注安全**:输入验证、敏感数据、权限控制
7. **团队协作**:建立规范、共享资源、定期复盘
遵循这些最佳实践,可以最大化 AI 辅助编程的价值,同时降低风险。
---
## 参考资料
- [GitHub Copilot Best Practices](https://github.blog/2023-06-14-how-to-use-ai-coding-tools-effectively/)
- [AI Code Generation Best Practices](https://www.sonarsource.com/blog/ai-code-generation-best-practices/)
- [Secure AI-Assisted Development](https://owasp.org/www-project-ai-security/)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475