🤖 现代 AI 开发者 · 现代代码审查

怎么审 AI 写的代码?验证事实论断、警惕过度实现

AI 会自信地编、会过度实现,审它和审人不一样

AI 会自信地胡说

审人写的代码,你大概知道对方哪块强哪块弱。审 AI 写的代码不一样:它永远一脸笃定,哪怕在编造。它可能调用一个根本不存在的函数、引用一个记错的参数名,却写得理直气壮。

🔆像一个口才极好的实习生:答得飞快又自信,但有时候答案是它现编的。你要做的就是逐条核对它说的「事实」
# AI 自信地写下:
import requests
resp = requests.fetch(url)   # requests 根本没有 fetch!是 get
print(resp.json_data)        # 也没有 json_data,是 .json()

盯紧它的「事实论断」

AI 代码里最危险的不是逻辑,而是那些被当成事实写下的论断:某个 API 叫什么、某个库的默认值是多少、某个接口返回什么字段。这些它最容易记错,而且错得很像真的。

💡看到「这个函数会自动重试 3 次」「该参数默认为 true」这类断言,别信——去查官方文档或实际跑一下。

逻辑,你靠读和测试就能判断;但对事实论断,你必须去外部信息源核对。

它还爱过度实现

你只要一个「判断字符串是不是空」的函数,AI 可能给你返回一个支持正则、去空格、忽略大小写、还带缓存的「超级函数」。多出来的部分不是贴心,是你没要、却要负责维护和审查的额外负担

⚠️过度实现会悄悄扩大风险面:多一行你没要的代码,就多一处可能出错、可能藏 bug 的地方。
# 你要的:判断是否为空
def is_empty(s):
    return len(s) == 0

# AI 给的:塞了一堆你没要的
def is_empty(s, strip=True, ignore_case=False, use_regex=False):
    ...  # 多出的参数全是额外维护成本

自测 · 学完检查一下

想真正动手做题、记进度、攒连胜?到互动课里练。

下面哪一项是 AI 生成代码相比人写代码更突出的风险?

答案:会非常自信地编造不存在的 API

AI 的典型风险是「自信地胡说」——以笃定语气写出实际不存在或记错的内容。

下面哪一句属于审 AI 代码时最该去外部核对的「事实论断」?

答案:「这个库的该函数默认会重试 3 次」

关于库默认行为的断言是 AI 最容易记错的事实论断,必须查文档或实测;后三项读代码就能确认。

判断:你只要求实现「两数相加」,AI 却返回了一个支持任意多个参数、还带日志和缓存的函数——这属于过度实现。

答案:正确

你没要的功能被塞进来,增加了维护和审查负担,这就是典型的过度实现。

判断:对于「这段代码的 for 循环逻辑对不对」这种问题,靠读代码和跑测试就能判断,不一定要查外部文档。

答案:正确

逻辑类问题可以靠阅读和测试验证;需要查外部信息源的,主要是 API、默认值这类事实论断。

面对 AI 的过度实现,比较稳妥的做法是?

答案:删掉没要求的多余功能,只留下真正需要的部分

多余功能是额外的维护与风险负担,审查时应砍掉没需求支撑的部分,保持代码精简。

AI 常常以笃定语气写出实际不存在或记错的内容,这种现象常被称为「____」(一个以「幻」开头的两字词)。

答案:幻觉

AI 一本正经地编造不存在的事实,常被称为「幻觉」,是审 AI 代码时必须警惕的核心风险。

想边练边学,而不只是读?

到互动课里答题、记进度、攒连胜——游客即可试学,无需注册。

进入互动课程 →