现在搞开发的人,谁还没用过几次GPT?但很多人只把它当聊天机器人,问点“Python怎么读文件”之类的问题。要让GPT在日常工作中真正派上用场,关键是把当成随时在线的小伙伴,帮你一起干活。本文梳理了六个最实用的开发场景,按实际工作流展开:遇到Bug → 让GPT帮你定位修复 → 帮你写测试验证 → 帮你做代码审查。另外还补充了生成代码骨架、解释遗留代码和重构优化。每个场景都附可直接复制的提示词模板、真实代码改前改后对比和验证方法。
场景一:用GPT修Bug——看到堆栈报错,直接甩给它
项目里突然蹦出一段看不懂的错误堆栈,手动翻文档费时间。GPT修Bug的好处是:把上下文——堆栈信息、相关代码段、语言版本——全丢给它,它能直接分析根因,连修复代码都写好。
提示词模板(Python示例)
你是个资深Python后端开发。下面是Django项目里报的完整错误堆栈:
[paste 堆栈信息]
项目用Python 3.11,Django 4.2。请帮我:
1. 指出根因:具体到哪行代码、哪个第三方库版本兼容问题
2. 给至少两种修复方案,每种说清适用场景
3. 输出改好后的代码片段,保留原函数签名和注释
4. 写一段验证思路:跑什么测试、检查什么日志能确认修好
代码改前改后对比
原始代码(触发TypeError):
def get_user_profile(user_id):
user = User.objects.get(id=user_id)
return user.profile
GPT修复:
from django.core.exceptions import ObjectDoesNotExist
def get_user_profile(user_id):
try:
user = User.objects.get(id=user_id)
except ObjectDoesNotExist:
return None
if not hasattr(user, 'profile'):
return None
return user.profile
验证:参数化测试,测有效user_id、不存在user_id、无profile三种情况,确保返回类型正确且不抛异常。
关键建议:提交Bug时带上完整堆栈信息和项目依赖版本,GPT对堆栈解析准确度很高。
场景二:用GPT写测试——自动生成Mock数据和边界情况
很多开发者不爱写测试,尤其Mock外部依赖和构造边界条件。GPT写测试能一次性覆盖正常路径、异常路径、边界值,连Mock数据定义都帮你搞定。
提示词模板(Java + JUnit 5 + Mockito)
你是个精通Java 17和Spring Boot 3的测试工程师。为下面Service类写单元测试:
[粘贴代码]
要求:
1. 用JUnit 5参数化测试
2. 用Mockito模拟UserRepository和EmailService
3. 覆盖:正常返回、空结果、SQL异常、超大分页数、null输入
4. 为每个Mock依赖生成Mock数据构造方法
5. 输出可直接粘贴运行的测试类,含必要import
验证方法
直接跑测试类,看覆盖率报告。低于80%可请GPT根据JaCoCo报告补测遗漏分支。注意:GPT生成测试可能有语法错误,建议先在本地IDE编译再跑。
场景三:用GPT做Code Review——揪出逻辑漏洞和设计模式问题
GPT当Review助手非常棒,不仅能发现语法问题,还能提醒设计模式、性能隐患和安全缺陷。
提示词模板(团队协作角度)
你是个有10年经验的资深架构师,正在做PR审查。下面是同事提交的PR代码:
[粘贴代码]
技术栈:Java 17 + Spring Boot 3 + MySQL + Redis。
请从以下维度审查并给出建议:
1. 逻辑错误:边界条件遗漏、业务逻辑矛盾
2. 性能缺陷:N+1查询、未用索引、不必要对象创建
3. 安全风险:SQL注入、XSS、未校验输入
4. 设计模式:破坏单一职责、过度耦合
5. 可读性:命名、注释、函数长度
对每个问题给出改进代码片段,标注严重等级(Critical/Major/Minor)。
实际审查案例
原始代码:
public void updateUserEmail(Long userId, String newEmail) {
String sql = "UPDATE users SET email = '" + newEmail + "' WHERE id = " + userId;
jdbcTemplate.update(sql);
}
GPT审查结果(Critical):
SQL注入风险:直接拼接。
改进:参数化查询
jdbcTemplate.update("UPDATE users SET email = ? WHERE id = ?", newEmail, userId);验证:输入
"'; DROP TABLE users; --",确认不会执行。
集成到CI/CD
将PR的diff文本作为输入,调用GPT API自动生成审查意见,人工筛选合并。比SonarQube规则库更能发现上下文相关的逻辑缺陷。
场景四:用GPT生成代码骨架——快速搭个标准模块
需要快速建CRUD模块、API端点或Spring配置类时,GPT能把重复性工作从二十分钟压缩到两分钟。
提示词模板
请生成Spring Boot 3的REST Controller,管理“文章”资源:
- 实体:Article(id, title, content, authorId, createTime, updateTime)
- CRUD:GET /articles(分页)、GET /articles/{id}、POST、PUT、DELETE
- 用JPA Repository
- 校验:title非空且不超过200字符,content非空
- 返回统一响应格式:{code, message, data}
- 含Swagger注解
GPT会输出Controller、Service、Repository、DTO、异常处理类,甚至可能带测试配置。只需复制到项目对应目录,改包名即可使用。注意:骨架代码不含特殊业务逻辑,需手动补齐。
场景五:用GPT解释遗留代码——从一团乱麻里理出头绪
接手老项目时,经常遇到几百行无注释、变量名混乱的函数。GPT能快速把代码翻译成人类可读的描述。
提示词模板
你是资深Java逆向工程师。下面是遗留代码,无注释,变量名是匈牙利命名法。
请:
1. 用自然语言解释核心业务逻辑,按步骤编号
2. 推断每个变量含义,给出有意义的英文重命名建议
3. 指出可能过时的API或设计缺陷
4. 给出重构后的简洁版本,保留原功能
[粘贴代码]
实用技巧:函数太长可分段粘贴。GPT对单函数200行以内解析准确度较高,超过500行易丢失上下文。
场景六:用GPT重构优化——安全地改善代码质量
重构最大风险是改出新Bug。GPT可以扮演“安全网”:你先让它提出优化方案,再手动执行。
提示词模板
请重构下面JavaScript函数,要求:
1. 不改变外部接口(函数名、参数、返回值类型)
2. 用ES2022语法替代过时写法(箭头函数、可选链、空值合并)
3. 把嵌套if-else改成提前返回
4. 把魔法数字提取为常量
5. 增加JSDoc注释
6. 输出修改后的完整函数,并在注释里标注每处改动原因
[粘贴代码]
示例效果
原始:
function getDiscount(price, userType) {
if (userType === 'vip') {
if (price > 100) return price * 0.8;
else return price * 0.9;
} else {
if (price > 100) return price * 0.95;
else return price;
}
}
重构后:
const VIP_LOW_THRESHOLD = 100;
const VIP_HIGH_DISCOUNT = 0.8;
const VIP_LOW_DISCOUNT = 0.9;
const NORMAL_HIGH_DISCOUNT = 0.95;
function getDiscount(price, userType) {
if (price <= VIP_LOW_THRESHOLD) {
return userType === 'vip' ? price * VIP_LOW_DISCOUNT : price;
}
return userType === 'vip'
? price * VIP_HIGH_DISCOUNT
: price * NORMAL_HIGH_DISCOUNT;
}
验证:对价格区间(0、50、100、200)和用户类型(vip、normal)做笛卡尔积测试,确认输出完全一致。
总结:什么时候用GPT,什么时候自己动手
场景推荐用GPT建议自己写修Bug(有明显堆栈)✅ 几乎总能快速解决堆栈不明确时手动调试写测试(简单函数/CRUD)✅ 效率提升明显复杂业务集成测试Code Review(中等规模PR)✅ 覆盖90%常见问题安全审计、合规性审查代码骨架生成✅ 省去重复劳动深度定制的业务逻辑解释遗留代码✅ 快速降低理解成本涉及大量协作者的架构理解重构优化✅ 可当安全网大规模重构分步手动
GPT在代码开发中的价值是降低认知负担,让你把精力花在架构设计、业务理解和团队协作上。收藏上述提示词模板,下次遇到对应场景直接使用——一个能和你对话的协作者,比任何静态文档都更懂你实际干活时碰到的麻烦。