用 ChatGPT 生成代码的优缺点 + 专业建议
一、优点(为什么值得用)
-
提效极强(样板代码/CRUD/脚手架)
接口层、DTO、表单校验、路由、SQL/ORM 模型、Dockerfile、CI 配置、测试样例……这些重复劳动,AI 能把你从 0 拉到 60 分非常快。 -
学习/迁移成本更低
对新框架、新库、新语言:让它“按你的项目风格”写一个最小可用示例 + 解释关键点,比翻文档快很多。 -
重构与解释很实用
把一段难读代码丢进去:让它解释、拆函数、提取公共逻辑、补注释、加类型标注、给重构方案(同时要求“不改变行为”)。 -
测试驱动更顺手
让它先写单测/边界用例,再写实现,最后让它按失败用例修正——比你从空白写测试更轻松。
二、缺点(真实项目里会踩的坑)
-
正确性不保证(尤其边界条件)
“看起来很对”但漏掉边界、并发、时区、编码、权限、异常链路,或者把需求误解成另一个东西。 -
容易引入安全漏洞
常见:SQL 注入、XSS、CSRF、SSRF、路径遍历、反序列化风险、弱加密、token/密钥处理不当、权限校验缺失。 -
架构/设计容易跑偏
它能写“能跑的代码”,但不一定符合你的领域建模、分层边界、可维护性、可观测性、性能目标。 -
依赖版本与生态细节易出错
库/API 变更很快,它可能用过时写法、错误参数、错误依赖组合;你不核对文档就会踩坑。 -
一致性与可维护性风险
不同对话、不同提示会生成不同风格:命名、错误处理、日志规范、返回结构不统一,代码库会“拼接感”很强。 -
合规/版权与数据泄露风险(团队必须重视)
把机密代码、密钥、客户数据直接贴进去是典型红线;以及生成内容的许可与归属要遵循公司政策。
三、专业建议(怎么用才“可靠”)
1)把 ChatGPT 当“高级 Pair Programmer”,而不是自动提交器
你的角色:架构与验收标准的定义者;AI 的角色:实现与备选方案生成器。
2)先给“上下文与约束”,再让它写
你给得越工程化,它越靠谱。建议一次性提供:
-
语言/版本、框架版本、运行环境
-
现有目录结构/关键文件片段
-
约定:日志、错误码、返回格式、命名风格、lint/formatter
-
非功能要求:性能、并发、可观测性、安全策略
3)强制它“先问清楚验收标准”
提示它先输出:
-
需求澄清问题(最多 5 个)
-
验收标准(Given/When/Then 或 checklist)
-
边界条件清单
然后再写实现。
4)让它“先写测试/用例”,再写实现
实战顺序(非常推荐):
-
生成测试用例(单测 + 边界 + 错误路径)
-
生成实现
-
根据测试失败信息迭代修复
这能显著降低“看起来能用但线上炸”的概率。
5)要求它输出“风险点 + 自检清单”
每次生成后,让它附带:
-
可能的安全问题(注入、鉴权、敏感信息)
-
并发/事务/幂等风险
-
需要你确认的假设
-
需要查官方文档的点
6)把安全与质量检查自动化
至少做到:
-
静态扫描:lint/typecheck
-
单测/集成测试
-
依赖漏洞扫描(SCA)
-
SAST(如有条件)
AI 代码必须过流水线再进主分支。
7)把输出“限制在最小变更集”
不要让它一次改全项目。让它:
-
只改 1-2 个文件
-
提供 diff 思路(改动点列表)
-
说明为何这样改、可能副作用
四、开发者可直接复用的提示词模板(不含代码)
模板 A:写功能(工程版)
你是资深后端工程师。请在不改变现有架构原则的前提下,实现【功能】。
环境:语言/版本…框架/版本…
约束:返回结构…日志规范…错误处理…权限/鉴权…
请先输出:1)澄清问题(≤5)2)验收标准 3)边界条件 4)实现方案(文件/函数级)
我确认后你再给具体实现与测试。
模板 B:重构(不改行为)
重构以下代码,目标:可读性/可维护性提升,但不改变行为。
请先说明:你认为当前代码的行为、潜在副作用、重构步骤(分 3 次提交)。
最后给出:重构后的代码 + 回归测试建议。
模板 C:安全加固
审计以下实现,按 OWASP 常见风险检查:注入、XSS、CSRF、鉴权、敏感信息、日志脱敏。
输出:风险点列表(按严重程度排序)+ 修复建议 + 最小修复改动方案。
五、结论:什么时候“非常推荐用”,什么时候“别依赖”
非常推荐:脚手架、样板代码、测试用例、重构草案、文档/注释、迁移示例、排查思路。
别依赖/必须人工主导:权限与安全设计、支付/交易/账务、并发一致性、核心架构、性能瓶颈定位、上线变更策略。


