p.16方法⏱ 约 4 分钟
陷阱 #16:复制粘贴式重复代码
同样的逻辑抄了五遍,改一处要改五处
🔎 最后验证 2026-05📚 来源:《AI编程实战三卷书》卷二 §8–12🧰 Claude Code✅ 79 人学过👁 112 次阅读
为什么学这个
你让 AI 加几个相似的功能,它一个个分别实现——结果同一段逻辑被复制粘贴了五遍。现在能跑,但哪天要改这段逻辑,你得在五个地方改;漏改一处,bug 就来了。
💡 打个比方
就像把同一份通知手抄了五张贴在五个公告栏:发布时没感觉,等通知要改,你得满楼找那五张、一张张换,漏一张就有人看到旧消息。重复代码就是这些"到处贴的手抄件"。
这个坑长什么样
// 三个几乎一样的函数,只差一个字段(❌ 重复)
function getUserName(u){ return u ? u.name : "未知"; }
function getUserEmail(u){ return u ? u.email : "未知"; }
function getUserPhone(u){ return u ? u.phone : "未知"; }
// 改"未知"这个默认值,要改三处;漏一处就不一致
为什么会犯 & 怎么识别
- 为什么:逐个需求分别实现,对 AI 最直接;它不一定主动抽取共性
- 识别信号:多段代码长得几乎一样,只差一两个值;改一个小逻辑要动好几处
怎么防
- 发现重复就抽取:让它"把这几段重复逻辑抽成一个函数/组件"
- DRY 原则:Don't Repeat Yourself——同一段逻辑只该有一处定义
- 审查时留意"似曾相识":diff 里出现成片相似代码,提醒它合并
❓ 测验
代码里同一段逻辑被复制了好几份,主要风险是?
⚠️ 避坑不是所有'看着像'都要硬合并
DRY 是好原则,但也别矫枉过正——把两段只是碰巧相似、其实会各自演化的代码强行合并,反而会绑死它们、以后更难改。判断标准:它们是同一个概念吗?是,就抽取;只是表面像,各管各的更好。让 AI 抽取时,你来判断这一点。
🤖 让 AI 消除重复(收藏)
这段代码里有重复的逻辑。请帮我把真正重复的部分抽取成一个可复用的函数/组件,让同一逻辑只定义一处。注意:只合并那些本质相同的逻辑,如果某些地方只是表面相似但会各自演化,请保留并说明理由。
🔎 来源与核验· 1 条,点开核对
本节每个关键论断都对应一个可追溯的来源 —— 这是本课程"靠谱、不过时"的底线。
「AI 易产生复制粘贴式重复代码,应按 DRY 抽取共性以便维护」
📚 《AI 编程实战三卷书》卷二 §8–12✓ 已核验 2026-05
🔧 试一试:让它加几个相似功能(5 分钟)
让 AI 陆续加三四个很相似的功能(比如三个相似的表单处理)。
你会看到:它常常复制粘贴各写一遍,而不是抽公共函数——以后改一处要改四处。
怎么防:看到重复主动让它抽成公共函数;审查时留意复制粘贴。
✅ 小结
重复你能治了。和它相邻的一类"卫生问题"是命名和风格乱——下一节。
下一节 → 陷阱 #17:命名与风格不一致

都看到这了,打个赏呗!
接下来 · p.17
陷阱 #17:命名与风格不一致
继续读下一节 →