AI编程实践
概述
本文档介绍如何基于 TRAE CN 构建完整的AI编程工作流,涵盖从项目初始化到测试部署的全流程实践指南。
第一章:AI编程工具链
1.1 工具链全景图
1.2 核心工具定位
| 阶段 | 核心工具 | 辅助工具 |
|---|---|---|
| 需求分析 | TRAE CN | XMind、ProcessOn |
| 项目初始化 | TRAE CN + 脚手架 | Spring Initializr |
| 代码编写 | TRAE CN | IDE插件、代码库 |
| 测试验证 | TRAE CN | JUnit、Postman |
| 部署运维 | TRAE CN | Docker、K8s |
1.3 工具选择策略
根据团队技术栈选择
| 技术栈 | 推荐AI工具 | 理由 |
|---|---|---|
| Java/Spring | TRAE CN + 通义灵码 | Spring生态支持好 |
| Python/Django | TRAE CN + Codeium | Python支持优秀 |
| 前端Vue/React | TRAE CN | 全栈支持 |
| Go | TRAE CN | Go语言支持 |
根据项目类型选择
| 项目类型 | 工具组合 | 侧重点 |
|---|---|---|
| 企业管理系统 | TRAE CN + 文心一言 | 代码生成 + 中文理解 |
| 互联网应用 | TRAE CN | 快速迭代 |
| 嵌入式项目 | TRAE CN | 代码优化 |
| 数据分析 | TRAE CN + 讯飞星火 | 知识问答 + 编程 |
第二章:项目初始化
2.1 技术栈确定
AI辅助技术选型流程
提示词模板
提示词:
请为以下项目需求提供技术选型建议:
项目描述:【项目需求描述】
性能要求:【性能指标】
团队技术栈:【现有技术栈】
团队规模:【团队规模】
请输出:
1. 推荐的技术栈组合
2. 各技术选型的理由
3. 关键技术指标估算2.2 脚手架生成
Maven多模块项目初始化
提示词:
请生成一个Maven多模块项目脚手架,结构如下:
父工程:shrimp-demo
├── module-common(公共模块)
│ └── 依赖:Spring Boot Starter
├── module-dao(数据访问层)
│ └── 依赖:MyBatis-Plus、module-common
├── module-service(业务逻辑层)
│ └── 依赖:module-dao、module-common
└── module-api(接口层)
└── 依赖:module-service
要求:
1. 使用Spring Boot 3.2
2. Java版本17
3. 统一版本管理
4. 生成pom.xml文件Spring Boot单体项目初始化
提示词:
请生成一个Spring Boot项目脚手架:
项目信息:
- 项目名:user-center
- 包名:com.example.usercenter
- Spring Boot版本:3.2.0
功能模块:
- 用户管理(CRUD)
- 角色管理(CRUD)
- 权限管理(CRUD)
技术栈:
- Spring Boot Web
- MyBatis-Plus
- Redis
- JWT
- Spring Security
请生成:
1. pom.xml依赖配置
2. application.yml配置
3. 主启动类
4. 基本项目结构2.3 开发环境配置
IDE配置
提示词:
请为Spring Boot项目生成IDE配置文件:
1. .editorconfig(代码风格配置)
2. .gitignore(Git忽略配置)
3. lombok.config(Lombok配置)
要求:
- Java代码风格
- 缩进4空格
- 编码UTF-8代码规范配置
提示词:
请生成阿里巴巴代码规范检查配置:
1. p3c-checkstyle配置
2. SpotBugs配置
3. SonarQube规则集
适用于Spring Boot 3.x项目第三章:需求分析
3.1 需求解析
自然语言转技术需求
提示词模板
提示词:
请分析以下需求,输出技术规格说明书:
需求描述:
【粘贴需求文档】
请输出:
1. **功能列表** - 分解后的功能点
2. **数据模型** - 涉及的实体和关系
3. **API接口清单** - RESTful接口设计
4. **业务流程** - 核心业务流描述
5. **非功能需求** - 性能、安全、可用性要求
要求:用技术语言描述,便于开发人员理解3.2 技术方案设计
数据模型推导
提示词:
请根据以下需求推导数据模型:
业务需求:
【业务需求描述】
请输出:
1. **实体清单** - 所有业务实体
2. **字段设计** - 每个实体的字段、类型、约束
3. **关系图** - 实体之间的关系(1:1, 1:N, N:N)
4. **ER图** - 完整的ER图描述
示例格式:
CREATE TABLE table_name (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
field_name VARCHAR(50) NOT NULL UNIQUE COMMENT '字段说明'
);API设计
提示词:
请为以下业务功能设计RESTful API:
业务模块:用户管理
功能点:
1. 用户注册
2. 用户登录
3. 获取用户信息
4. 更新用户信息
5. 修改密码
6. 注销用户
请输出:
1. **接口清单** - 路径、方法、说明
2. **请求格式** - 请求参数、Header
3. **响应格式** - 成功/失败响应结构
4. **状态码定义** - HTTP状态码使用规范
示例格式:
POST /api/users/register
Request: { username, password, email }
Response: { code, message, data: { userId, token } }3.3 任务拆分
Epic/Story拆分
提示词:
请将以下Epic拆分成Story,并估算工作量:
Epic:用户管理模块
Epic描述:
【Epic详细描述】
团队速度:【团队每个Sprint可完成的Story点数】
请输出:
1. **Story清单** - 每个Story的名称、描述、验收标准
2. **工作量估算** - 每个Story的点数
3. **Sprint规划** - 如何分配到Sprint
格式:
| Story ID | Story名称 | 描述 | 验收标准 | 估算点数 |第四章:代码编写
4.1 代码生成
根据数据模型生成代码
提示词:
请根据以下数据表生成完整的CRUD代码:
表名:sys_user
字段:
CREATE TABLE sys_user (
id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
password VARCHAR(100) NOT NULL COMMENT '密码(加密存储)',
email VARCHAR(100) COMMENT '邮箱',
phone VARCHAR(20) COMMENT '手机号',
status TINYINT DEFAULT 1 COMMENT '状态:1启用 0禁用',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
);
请生成:
1. **UserEntity.java** - 实体类
2. **UserMapper.java** - Mapper接口
3. **UserService.java** - Service接口
4. **UserServiceImpl.java** - Service实现
5. **UserController.java** - Controller
6. **DTOs** - 请求/响应对象
7. **Mapper XML** - MyBatis XML
要求:使用MyBatis-Plus、Lombok、Spring Boot 3.x根据API设计生成代码
提示词:
请根据以下API设计生成Controller代码:
POST /api/users/register
Request:
username: string (required, 4-20 chars)
password: string (required, 6-20 chars)
email: string (required, valid email)
Response:
code: int
message: string
data:
userId: long
token: string
请生成:
1. UserCreateRequest.java
2. UserRegisterResponse.java
3. UserController.java(含REST接口实现)
要求:使用Spring Boot 3.x、validation注解4.2 代码优化
性能优化
提示词:
请分析并优化以下代码的性能问题:
代码:
public List<OrderVO> getOrdersByUserId(Long userId) {
List<OrderEntity> orders = orderMapper.selectByUserId(userId);
List<OrderVO> result = new ArrayList<>();
for (OrderEntity order : orders) {
ProductEntity product = productMapper.selectById(order.getProductId());
UserEntity user = userMapper.selectById(order.getUserId());
OrderVO vo = convertToVO(order, product, user);
result.add(vo);
}
return result;
}
问题:N+1查询问题
请优化为批量查询,减少数据库访问次数代码重构
提示词:
请重构以下代码,使用设计模式优化:
代码:
public class PaymentService {
public void pay(String type, BigDecimal amount) {
if ("alipay".equals(type)) {
// 支付宝支付逻辑
} else if ("wechat".equals(type)) {
// 微信支付逻辑
} else if ("bank".equals(type)) {
// 银行卡支付逻辑
}
}
}
请重构为策略模式+工厂模式4.3 代码审查
AI辅助代码审查要点
代码审查提示词
提示词:
请审查以下代码,从多个维度指出问题:
代码:
【粘贴代码】
审查维度:
1. 业务逻辑正确性
2. 代码质量问题
3. 安全漏洞
4. 性能问题
5. 扩展性建议
请逐条列出发现的问题,并给出修复建议第五章:测试实践
5.1 单元测试
测试用例生成
提示词:
请为以下Service方法生成JUnit 5单元测试:
代码:
public class UserService {
private final UserMapper userMapper;
public User createUser(UserCreateRequest request) {
// 参数校验
if (StringUtils.isBlank(request.getUsername())) {
throw new IllegalArgumentException("用户名不能为空");
}
if (StringUtils.isBlank(request.getPassword())) {
throw new IllegalArgumentException("密码不能为空");
}
if (userMapper.existsByUsername(request.getUsername())) {
throw new BusinessException("用户名已存在");
}
// 创建用户
UserEntity entity = new UserEntity();
entity.setUsername(request.getUsername());
entity.setPassword(passwordEncoder.encode(request.getPassword()));
entity.setEmail(request.getEmail());
entity.setStatus(1);
userMapper.insert(entity);
return convertToUser(entity);
}
}
请生成:
1. 使用JUnit 5 + Mockito
2. 覆盖正常场景
3. 覆盖异常场景(参数为空、用户名重复等)
4. 使用@DisplayName标注测试用例边界条件测试
提示词:
请为以下方法设计边界条件测试用例:
方法:
public int calculateDiscount(BigDecimal price, BigDecimal discountRate) {
if (price == null || price.compareTo(BigDecimal.ZERO) < 0) {
throw new IllegalArgumentException("价格无效");
}
if (discountRate == null || discountRate.compareTo(BigDecimal.ZERO) < 0
|| discountRate.compareTo(BigDecimal.ONE) > 0) {
throw new IllegalArgumentException("折扣率无效");
}
return price.multiply(discountRate).intValue();
}
请设计边界条件测试用例,覆盖:
1. 正常折扣率(0 < rate < 1)
2. 边界折扣率(rate = 0, rate = 1)
3. 无效折扣率(rate < 0, rate > 1)
4. 边界价格(price = 0, price = MAX)
5. 空值情况5.2 集成测试
接口测试生成
提示词:
请为以下Controller生成SpringBootTest集成测试:
Controller:
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserService userService;
@PostMapping("/register")
public ResponseEntity<Response<UserVO>> register(@Valid @RequestBody UserCreateRequest request) {
UserVO user = userService.createUser(request);
return ResponseEntity.ok(Response.success(user));
}
@GetMapping("/{id}")
public ResponseEntity<Response<UserVO>> getUser(@PathVariable Long id) {
UserVO user = userService.getUserById(id);
return ResponseEntity.ok(Response.success(user));
}
}
请生成:
1. @SpringBootTest集成测试
2. 使用MockMvc进行HTTP测试
3. 使用@TestConfiguration注入Mock Bean
4. 测试正常场景和异常场景5.3 测试覆盖率
覆盖率分析提示词
提示词:
请分析以下代码的测试覆盖情况,并给出补充建议:
代码文件列表:
1. UserService.java
2. OrderService.java
3. PaymentService.java
请输出:
1. 当前测试覆盖情况分析
2. 未覆盖的代码路径
3. 补充测试用例建议
4. 测试数据建议第六章:技能地图
6.1 提示词技能
基础语法
| 技能 | 说明 | 示例 |
|---|---|---|
| 角色设定 | 指定AI扮演的角色 | "请作为资深Java架构师" |
| 明确任务 | 清晰说明要做什么 | "生成用户CRUD代码" |
| 提供上下文 | 给出必要的背景 | "使用Spring Boot 3.2" |
| 指定格式 | 说明期望的输出格式 | "输出JSON格式" |
| 设定约束 | 明确限制条件 | "代码不超过100行" |
进阶技巧
| 技巧 | 说明 | 示例 |
|---|---|---|
| 分步骤 | 复杂任务分解 | "第一步...第二步..." |
| 提供示例 | 给出参考模板 | "类似XXX这样实现" |
| 迭代优化 | 逐步完善结果 | "在基础上添加XXX" |
| 指定风格 | 明确代码风格 | "遵循阿里巴巴规范" |
| 要求解释 | 同时输出说明 | "附带代码解释" |
场景模板库
模板1:代码生成
提示词:
请使用【技术栈】为【业务场景】生成【输出类型】:
技术栈:【如Spring Boot 3.2 + MyBatis-Plus】
业务场景:【如用户管理模块的CRUD功能】
输出类型:【如Controller、Service、Entity等】
具体要求:
1. 【要求1】
2. 【要求2】
3. 【要求3】模板2:错误排查
提示词:
请分析以下错误并提供修复方案:
错误类型:【如NullPointerException】
错误信息:【错误堆栈或描述】
相关代码:【相关代码片段】
请输出:
1. 问题根因分析
2. 修复代码
3. 预防建议模板3:代码审查
提示词:
请审查以下代码,重点关注【审查维度】:
代码:
【代码内容】
审查维度:
1. 【维度1】
2. 【维度2】
3. 【维度3】
请逐条列出问题和修复建议6.2 AI协作技能
上下文管理
| 技能 | 说明 | 实践 |
|---|---|---|
| 会话保持 | 在同一会话中连续对话 | 问题之间建立上下文联系 |
| 信息传递 | 重要信息在前置对话中说明 | 避免重复说明相同背景 |
| 范围界定 | 明确当前讨论的范围 | 使用"当前模块"等限定词 |
| 状态追踪 | 记录已完成的工作 | 对话开头简要说明进度 |
迭代优化方法
结果验证方法
| 验证类型 | 方法 | 说明 |
|---|---|---|
| 编译验证 | 在IDE中编译检查 | 确保语法正确 |
| 单元测试 | 运行生成代码的测试 | 验证逻辑正确 |
| 代码审查 | AI或人工审查 | 确保质量达标 |
| 文档对照 | 与需求文档对比 | 确保功能完整 |
6.3 质量保障技能
代码质量评估维度
AI辅助质量检查清单
- [ ] 正确性:业务逻辑是否正确实现
- [ ] 完整性:所有需求是否覆盖
- [ ] 边界处理:异常输入是否处理
- [ ] 安全性:是否有安全漏洞
- [ ] 性能:是否有性能问题
- [ ] 可读性:代码是否清晰易懂
- [ ] 可维护性:是否易于修改扩展
- [ ] 测试覆盖:核心逻辑是否测试
附录:开发流程全景图
总结
基于 TRAE CN 的AI编程实践,核心在于:
- 工具链协同 - 选择合适的AI工具组合,全流程覆盖
- 流程标准化 - 建立从需求到部署的标准工作流
- 提示词工程 - 掌握提示词技巧,提高交互效率
- 质量保障 - AI辅助+人工审查,确保代码质量
- 持续迭代 - 不断优化提示词和工作流程
通过系统化的AI编程实践,团队可以显著提升开发效率,将更多精力投入到业务创新和架构优化中。