AI 编程的隐藏成本(以及如何有意识地使用它)
Source: Dev.to
“AI 并没有弄坏你的代码。是你对它太过信任了。”
GitHub Copilot、ChatGPT 等 AI 工具正在改变我们编写软件的方式。你敲一行注释……瞬间就出现了完整的函数。感觉像魔法。
但有一个令人不舒服的事实:如果不小心,AI 会悄悄让你成为更差的工程师。这并不是反 AI——我每天都在使用它。
AI 编程的负面影响
1. 你停止深入思考
AI 给你答案,而不是理解。
def calculate_discount(price, discount):
# Looks correct…
return price * (1 - discount)
如果 discount = 20 而不是 0.20 会怎样?AI 并不会验证业务逻辑——它只会生成代码。
2. 缺乏上下文
AI 可能生成看起来整洁的代码,却忽视了生产环境的顾虑:
- 没有分页
- 没有限流
- 没有身份验证
- 没有缓存
你刚刚制造了一个生产风险。
3. 自信却错误的代码
AI 听起来很正确,即使它是错的。
List list = Arrays.asList("a", "b", "c");
Arrays.asList() 返回的是固定大小的列表,尝试添加或删除元素会抛出 UnsupportedOperationException。AI 漏掉了这条细微的语言规则。
4. 技术债务爆炸
AI 优先考虑“让它工作”,而不是“让它可扩展且易维护”。
function processOrder(order) {
// No design pattern
// No extensibility
// Hard to maintain
}
生成的代码难以扩展和维护,导致技术债务不断累积。
调试能力下降
如果 AI 写了所有代码,当出现问题时会怎样?你只能在不完全理解的代码上进行调试。
谨慎使用 AI
1. 将 AI 用作草稿,而不是决策
错误做法: “AI 写的,直接上线。”
正确做法: “AI 写的,我再验证一下。”
2. 始终添加约束
不要只要求一个通用的 “用户 API”,要具体说明:
“编写一个带分页、限流、身份验证并具备错误处理的 API。”
示例(更好的 API):
if (limit > 100) {
res.status(400).json({ error: "Limit exceeds maximum of 100" });
return;
}
const users = await db.getUsersPaginated(page, limit);
res.json({ users });
3. 把 AI 当作初级开发者
- 彻底审查代码。
- 质疑假设。
- 测试边缘情况。
4. 向 AI 提问 “为什么”,而不仅仅是 “什么”
不要只说 “给我代码”,而是:
“解释权衡、边缘情况和风险。”
5. 将 AI 用于重复性工作
最佳使用场景:
- 样板代码
- 测试用例
- 文档
- 重构建议
避免在关键架构决策上依赖 AI。
问题不在于 AI 本身——在于盲目信任。最优秀的工程师不会用 AI 替代思考,而是用 AI 放大思考。