头图

这篇不聊“AI 会不会取代程序员”,也不做夸张预测。站在开发者视角,真正有价值的问题其实是:ChatGPT 5.5 能不能帮我们把日常开发中那些重复、繁琐、容易遗漏的工作处理得更好?比如读需求、拆任务、补测试、写文档、查问题、做代码 Review。实际体验下来,它更像是一个工程协作助手,而不是一个单纯的代码生成器。

1. 开发者为什么不应该只把它当“写代码工具”

很多人刚开始用 ChatGPT 5.5,通常会这样提问:

帮我写一个接口。
帮我写一个 Vue 页面。
帮我写一个 SQL。
帮我修复这个报错。

这种方式能用,但价值有限。

因为真实项目里的代码不是独立存在的。一个接口背后通常会牵涉:

  • 权限校验;
  • 参数校验;
  • 业务状态;
  • 数据一致性;
  • 异常处理;
  • 日志规范;
  • 缓存策略;
  • 并发问题;
  • 接口兼容;
  • 测试覆盖;
  • 上线回滚。

如果只让 AI 生成一段代码,它很可能给出一个“示例级答案”。这类代码看着完整,但放到真实项目里还要大量修改。

更好的方式是把 ChatGPT 5.5 放到开发流程中使用,而不是只放到编码环节使用。

也就是说,不是问它:

帮我写代码。

而是让它参与:

帮我分析这个需求是否完整。
帮我拆分开发任务。
帮我设计接口和表结构。
帮我检查这段代码有什么风险。
帮我补充测试用例。
帮我整理上线 checklist。

这样才能发挥它在工程场景里的实际价值。

2. 从一个常见需求开始:用户地址管理

假设现在有一个需求:给电商项目增加“用户收货地址管理”。

产品描述可能只有几句话:

用户可以新增、编辑、删除收货地址,可以设置默认地址,下单时选择地址。

如果直接开始写代码,很容易遗漏细节。比如:

  • 一个用户最多能添加多少个地址?
  • 默认地址是否只能有一个?
  • 删除默认地址后如何处理?
  • 下单使用过的地址被删除后,订单地址是否变化?
  • 地址是否需要行政区划编码?
  • 手机号是否需要脱敏展示?
  • 是否支持海外地址?
  • 是否需要地址标签,比如“家”“公司”?
  • 是否允许重复地址?
  • 是否需要操作日志?
  • 是否有风控限制,防止频繁修改?

这些问题如果开发前不确认,后面很容易反复改。

这时可以让 ChatGPT 5.5 先做需求补全:

我正在做一个电商系统的用户收货地址管理功能。
已知需求:用户可以新增、编辑、删除地址,可以设置默认地址,下单时选择地址。
请从后端、前端、测试、产品、安全五个角度,列出需要确认的问题,并给出建议的验收标准。

它的作用不是替你定需求,而是帮你快速发现盲区。

对开发者来说,这一步非常重要。因为需求越清楚,后面写代码越顺。

3. 用它拆任务,而不是只生成结果

很多项目推进慢,并不是因为某个功能特别难,而是任务没有拆清楚。

继续以地址管理为例,一个完整功能至少可以拆成:

  • 地址新增接口;
  • 地址编辑接口;
  • 地址删除接口;
  • 地址列表接口;
  • 设置默认地址接口;
  • 下单页地址选择;
  • 订单地址快照;
  • 地址数据校验;
  • 默认地址唯一性处理;
  • 前端表单校验;
  • 单元测试;
  • 接口文档;
  • 灰度上线检查。

如果让 ChatGPT 5.5 参与拆任务,可以这样输入:

请把“用户收货地址管理”拆成后端、前端、测试三个角色的开发任务。
每个任务要求包含:任务说明、依赖关系、注意事项、验收标准。
输出为 Markdown 表格。

它可以很快生成一份任务清单。

这类清单不一定完全符合团队实际情况,但很适合用作研发评审前的草稿。你可以基于这份草稿删减、调整、补充,从而减少遗漏。

对于一个小团队来说,这种使用方式特别实用。因为很多时候,团队里并没有专门的人负责把需求拆得很细,开发者自己就要承担这部分工作。

4. 技术设计:让 AI 先给出低成本方案

不少开发者在做技术方案时,容易陷入两个问题:

一种是想到什么写什么,缺少完整性;
另一种是为了“显得高级”,把方案设计得过于复杂。

ChatGPT 5.5 比较适合做方案初稿。

比如地址管理功能,后端可以先让它输出:

请为用户收货地址管理设计后端方案。
技术栈:Spring Boot + MySQL + Redis。
要求包含:
1. 表结构设计;
2. 接口设计;
3. 默认地址唯一性的处理方式;
4. 删除地址时与历史订单的关系;
5. 参数校验规则;
6. 可能的并发问题;
7. 测试用例。

它可能会给出类似设计:

CREATE TABLE user_address (
    id BIGINT PRIMARY KEY,
    user_id BIGINT NOT NULL,
    receiver_name VARCHAR(64) NOT NULL,
    receiver_phone VARCHAR(32) NOT NULL,
    province_code VARCHAR(32),
    province_name VARCHAR(64),
    city_code VARCHAR(32),
    city_name VARCHAR(64),
    district_code VARCHAR(32),
    district_name VARCHAR(64),
    detail_address VARCHAR(255) NOT NULL,
    is_default TINYINT NOT NULL DEFAULT 0,
    deleted TINYINT NOT NULL DEFAULT 0,
    created_at DATETIME NOT NULL,
    updated_at DATETIME NOT NULL
);

这不是最终设计,但可以作为讨论基础。

随后再继续追问:

如果一个用户同时发起两个设置默认地址请求,如何保证最终只有一个默认地址?
请给出几种方案,并比较优缺点。

它通常会给出事务处理、唯一索引、乐观锁、分布式锁等方案。

对开发者来说,真正有价值的不是直接复制答案,而是利用它快速完成“方案枚举”和“风险提示”。

5. 编码:给足上下文,输出才更贴近项目

AI 生成代码最常见的问题是:代码能看,但不像项目里的代码。

比如你的项目有统一返回:

ApiResponse.success(data)

有统一异常:

throw new BizException(ErrorCode.PARAM_INVALID);

有统一分页:

PageResult<T>

有统一权限注解:

@RequireLogin

如果你不告诉模型这些约定,它就会自己编一套。

所以在使用 ChatGPT 5.5 写代码时,建议至少提供:

  • 当前项目技术栈;
  • 现有 Controller 示例;
  • 现有 Service 示例;
  • 统一返回对象;
  • 异常处理方式;
  • DTO 命名习惯;
  • 数据库字段风格;
  • 是否允许新增依赖;
  • 是否需要事务;
  • 是否需要日志。

例如:

下面是当前项目已有的用户模块代码风格。
请参考该风格实现“新增收货地址”接口。
要求:
1. 不引入新依赖;
2. 使用现有 ApiResponse 返回;
3. 使用 BizException 处理业务异常;
4. 手机号需要格式校验;
5. 每个用户最多保存 20 个地址;
6. 如果是用户第一条地址,自动设为默认地址;
7. 输出 Controller、Service、DTO、Mapper 层代码。

这种输入方式得到的代码,会比一句“帮我写地址接口”可靠得多。

6. SQL 与索引:适合让它做第一轮检查

很多业务表刚开始数据量小,怎么查都快。等数据量上来之后,问题才暴露。

地址表看起来简单,但也有一些查询场景:

  • 查询用户地址列表;
  • 查询用户默认地址;
  • 根据地址 ID 查询并校验 user_id;
  • 删除地址时更新状态;
  • 设置默认地址时更新旧默认地址。

可以让 ChatGPT 5.5 帮忙检查索引设计:

下面是 user_address 表结构和常见查询 SQL。
请帮我检查索引是否合理,是否存在慢查询风险,并给出优化建议。

它通常会建议:

CREATE INDEX idx_user_address_user_id_deleted 
ON user_address(user_id, deleted);

CREATE INDEX idx_user_address_user_default 
ON user_address(user_id, is_default, deleted);

但这里要注意:索引不是越多越好。

AI 给出的索引建议必须结合实际查询频率、数据量、写入频率和执行计划来判断。正确做法是让它提供思路,然后开发者再用 EXPLAIN 验证。

可以继续让它分析:

请解释这个 EXPLAIN 结果,判断是否命中索引,以及是否存在回表、扫描行数过多的问题。

这种方式对日常排查 SQL 性能问题很有帮助。

7. 代码 Review:让它从“风险视角”检查

在真实团队里,很多 Bug 都不是语法错误,而是边界没处理好。

地址管理功能可能存在的问题包括:

  • 删除地址时没有校验是否属于当前用户;
  • 设置默认地址时没有处理并发;
  • 更新地址时允许修改别人的地址;
  • 手机号、姓名、详细地址没有长度限制;
  • 删除下单地址后影响历史订单;
  • 日志里打印了完整手机号;
  • 前后端校验规则不一致;
  • 没有处理第一条地址自动默认;
  • 用户地址数量没有限制;
  • 接口没有登录态校验。

可以把代码 diff 发给 ChatGPT 5.5:

请以代码 Review 的方式检查下面的 diff。
重点关注:
1. 权限越权;
2. 数据一致性;
3. 并发问题;
4. 参数校验;
5. 敏感信息日志;
6. 测试遗漏。
请按严重程度排序输出。

这种用法非常适合作为人工 Review 前的预检查。

它不一定能发现所有问题,但可以帮你提前扫掉一批低级风险。

8. 测试用例:让它补充边界值和异常流程

开发者自己写测试时,很容易只覆盖正常流程。

以地址管理为例,正常用例可能只有:

  • 新增地址成功;
  • 编辑地址成功;
  • 删除地址成功;
  • 设置默认地址成功;
  • 查询地址列表成功。

但真实场景要复杂得多:

类型用例
参数校验姓名为空、手机号为空、详细地址超长
权限校验用户 A 修改用户 B 的地址
数量限制用户已有 20 条地址后继续新增
默认地址第一条地址自动默认
默认地址删除默认地址后的处理
并发场景同时设置两个地址为默认
订单关联地址删除后历史订单地址不变化
安全问题返回结果中手机号是否脱敏
兼容问题老版本 App 是否依赖旧字段

可以让 ChatGPT 5.5 生成测试矩阵:

请为用户收货地址管理功能生成测试用例。
要求按正常流程、异常流程、边界值、权限、并发、数据一致性分类。
每条用例包含:前置条件、操作步骤、预期结果。

对于测试人员来说,它可以作为测试用例初稿;对于开发者来说,它可以帮助提前发现需求设计的问题。

9. 文档:不要等上线后再补

很多开发者不喜欢写文档,但文档缺失会在后期带来很高成本。

地址管理功能至少需要这些文档:

  • 接口文档;
  • 字段说明;
  • 错误码说明;
  • 前后端交互说明;
  • 默认地址规则;
  • 地址删除规则;
  • 订单地址快照说明;
  • 测试说明;
  • 上线注意事项。

可以在代码基本完成后,让 ChatGPT 5.5 根据接口和 DTO 生成文档:

请根据下面的 Controller 和 DTO 生成接口文档。
要求包含:
1. 接口路径;
2. 请求方式;
3. 请求参数;
4. 响应示例;
5. 错误码;
6. 注意事项。
输出为 Markdown。

生成后再由开发者检查业务规则是否准确。

这种方式不能完全替代人工文档,但能显著降低从零开始写文档的阻力。

10. 上线前:让它生成 checklist

上线前最怕遗漏。

一个小功能也可能因为配置、数据、兼容问题导致线上事故。可以让 ChatGPT 5.5 生成上线检查清单:

用户收货地址管理功能即将上线。
请从后端、前端、数据库、缓存、日志、监控、灰度、回滚、数据安全几个角度生成上线 checklist。

输出可能包括:

  • 数据库表是否已创建;
  • 索引是否已验证;
  • 新接口是否加权限;
  • 前端是否处理错误提示;
  • 日志是否避免打印完整手机号;
  • 监控是否覆盖接口异常率;
  • 是否准备回滚脚本;
  • 是否兼容老版本客户端;
  • 是否有灰度开关;
  • 是否验证订单地址快照逻辑。

这类 checklist 对小团队尤其有帮助。

很多线上问题不是技术难度高,而是上线前少检查了一步。

11. 使用时需要注意的边界

ChatGPT 5.5 很适合做辅助,但不能直接替代开发者判断。

尤其是下面这些内容,不建议完全交给 AI 决定:

  • 数据库最终设计;
  • 核心交易流程;
  • 支付、结算、财务相关逻辑;
  • 安全策略;
  • 权限模型;
  • 生产环境变更;
  • 性能优化最终方案;
  • 合规和隐私处理规则。

另外,使用时也要注意信息安全。不要直接输入:

  • 线上用户手机号;
  • 身份证号;
  • 密钥;
  • 数据库密码;
  • 内部 Token;
  • 未脱敏日志;
  • 客户合同;
  • 公司内部敏感代码。

如果需要分析,可以先做脱敏处理,把真实数据替换成结构相同的模拟数据。

12. 一个更适合开发者的使用模板

日常使用 ChatGPT 5.5,可以固定采用下面这个模板:

背景:
我正在开发/维护一个什么系统,技术栈是什么。

目标:
我希望完成什么任务。

已知信息:
已有需求、代码、表结构、接口或报错信息。

约束:
不能引入什么依赖,必须兼容什么逻辑,有哪些性能或安全要求。

希望输出:
请按什么格式输出,比如方案、代码、表格、测试用例、Review 清单。

注意事项:
请指出风险,不确定的地方不要直接假设,先列出需要确认的问题。

示例:

背景:
我在维护一个 Spring Boot + MySQL 的电商系统。

目标:
新增用户收货地址管理功能。

约束:
不引入新依赖,接口必须登录后访问,每个用户最多 20 条地址,历史订单地址不能受后续地址修改影响。

希望输出:
请先输出需求确认问题,再输出表结构、接口设计、核心流程、风险点和测试用例。暂时不要写代码。

这种提问方式会明显提升输出质量。

因为对 AI 来说,输入越接近真实任务说明,输出越接近可用结果。

13. 总结

ChatGPT 5.5 对开发者真正有用的地方,不是“替你写完一个功能”,而是把开发过程中的很多辅助工作变得更高效。

它可以帮你:

  • 在需求阶段发现遗漏;
  • 在设计阶段生成方案草稿;
  • 在编码阶段补齐样板代码;
  • 在 Review 阶段发现潜在风险;
  • 在测试阶段补充边界场景;
  • 在文档阶段生成初稿;
  • 在上线前整理 checklist。

但最终的工程判断,仍然要由开发者完成。

比较合理的方式是:让 ChatGPT 5.5 做信息整理、方案枚举、初稿生成和风险提醒;让开发者负责取舍、验证、落地和兜底。

如果用得好,它不是一个“替代程序员”的工具,而是一个能显著提升研发效率的工程助手。


空虚的大海
1 声望0 粉丝