网易首页 > 网易号 > 正文 申请入驻

世道变了,软件大神都叛变了,向AI投降了......

0
分享至

回顾我这20来年的码农生涯,如果在编程领域找一本对我影响最大的书籍,应该是这一本:


这本书挂着敏捷软件开发的“羊头”,卖的却是面向对象设计的“狗肉”。

它讲了很多设计模式,但是我认为它最精华的部分其实是那个“薪水支付案例”,这个例子让我第一次真正地体会到软件在做设计时,如何做出正确的抽象,发现变化并且封装变化,针对接口编程,组合优于继承。

在我的印象当中,可能只有《Head First Pattern》中的例子能和它比一下,但是无论是复杂度,还是真实感就差太多了。

这种抽象的思想,不是某个编程语言(C++)所独有的,而是所有编程语言都共通的。

这本书的作者,叫做Robert Martin, 人称Uncle Bob(Bob大叔)。


Bob 大叔应该是这个世界上最古老程序员之一,他从1968年开始接触计算机,通过打孔卡和纸带在在 IBM 1401 以及 PDP-8 等早期机型上编写程序。后来用汇编、C语言、Fortran、COBOL等语言进行开发。

80年代末,Bob 大叔接触到C++ 和面向对象的思想,经常泡在“论坛”和人“吵架”,争论如何写面向对象的程序,聊来聊去就总结出一些原则,例如SRP、ISP、DIP、OCP ,最终形成了著名的SOLID原则。

Bob 大叔还有一个非常知名的书,叫做《Clean Code》,如果说上一本是“道”的话,这一本就是“术”,主要是把SOLID和重构落地,写出漂亮代码。

Bob 大叔还是敏捷宣言的24位发起人之一,对TDD和重构非常推崇。


简单来说,Bob 大叔过去几十年所做的一切,都是为了把系统设计得更好,把代码搞的更好阅读,更容易维护。

但是,这样一位一辈子追求Clean Architecture、Clean Code的面向对象的祖师爷,面对AI的威胁和攻击,竟然能“叛变”了!

01

大神的背叛

7月23日,他发了一条帖子,说AI写的代码他一行都不看。


你能想象吗?这样一个面向对象编程的“祖师爷”,对代码有“洁癖”的编程大师,竟然不看代码了。

那这些代码看都不看,如何保证正确性呢?

Bob大叔的做法是给AI施加重重限制,确保糟糕的代码无法通过验证。

第一道防线,是验收测试。

很多时候他会用 Gherkin 这种接近自然语言的格式来写,比如:

Feature: 用户登录

Scenario: 用户输入正确密码登录成功

Given 用户打开登录页面

When 用户输入正确的用户名和密码

Then 用户应该进入首页

这样面向业务的验收测试,主要解决一个问题:软件到底应该干什么,先说清楚。

第二道防线,是单元测试。

它负责盯住代码里的“小零件”,一个函数应该怎么工作,一个模块应该返回什么结果,都提前写好测试。

配合较高的测试覆盖率,可以保证软件不是“看起来能跑”,而是真的有大量行为被验证过。

比较有意思的是第三个:突变测试(Mutation Testing)。

测试工具会偷偷改你的代码,把 > 改成 <,删掉一行代码,故意制造一个小 bug,然后重新运行测试。

如果测试还能全部通过,说明什么?说明你的测试可能只是“摆设”!

还有一类检查,是从外部观察软件质量。

不是打开代码一行行看,而是看它最终表现出来的指标,比如:


  • 测试覆盖率

  • 依赖关系是否混乱

  • 模块是不是越来越庞大

  • 圈复杂度


如果一个函数的复杂度达到 40,通常意味着:这里面的逻辑已经像一团打结的耳机线。

不用读完整段代码,只看这个数字,就知道它未来维护起来会很痛苦。

这些方法有一个共同特点:它们都可以被机器自动检查。

机器负责每一次提交、每一次构建、每一次 AI 生成代码后自动执行,机器不会疲劳,更不会因为看到第499行代码开始走神。

总之,Bob大叔认为:要想获得 AI 的高生产力,人类必须从代码细节中解脱出来,从更高级别进行管理。

说实话,看到Bob 大叔的这些言论,我觉得他背叛了他一手教导的广大程序员。

因为他在《Clean Code》里面一直强调:软件大部分时间是在阅读,而不是编写。结果现在他说:我不读 AI 写的代码。

我觉得这种“背叛”的理由有两个:

1.AI生成代码的速度远远超过了人类阅读代码的速度。

既然都看不过来了,还不如去关注测试!

2.他可能在给自己的课程传播造势

Bob 大叔自己有一门课《Clean AI: Agentic Discipline》


这门课讲的就是如何利用 AI 进行高效软件开发,并建立自动化纪律以在不人工逐行审查代码的情况下确保项目质量。

Bob 大叔抓住了 AI 编程时代一个真实存在的问题,然后用一个极具传播性的观点,把自己的解决方案包装成新的软件工程方法论。

02

测试能保证正确性吗?

答案是:不行。

因为测试只能验证“你想到的问题”,无法验证“你根本没想到的问题”。

举个例子,AI 写一个优惠券系统,需求:用户领取优惠券,下单时可以抵扣金额,满100减20

你可以写很多测试,例如:

测试1:正常使用优惠券

测试2:优惠券过期

测试3:优惠券只能使用一次

测试4:优惠券金额不能超过订单

。。。。

所有测试通过,大家会觉得这个优惠券系统没问题。

半年后,产品突然增加一个需求:一个订单可以同时使用优惠券和积分。

现在问题来了,是先扣积分还是先用优惠券呢?

如果先扣积分,订单100元,先扣积分30元,剩70元,没法用优惠券了。

你如果事先想到了这种情况,可以和产品商量好业务规则,通过测试把它确定下来。

如果你想不到,那虽然所有测试都通过,系统上线后肯定会有用户投诉了。

过了两年,公司的业务又变化了:“双11活动,所有订单额外打九折。”

你需要把订单的各种情况都考虑到,保证没有问题才行。

那我有没有可能事先把所有情况都考虑到,然后把它们用测试覆盖?

这是软件工程里一个非常经典的问题。

一个简单的答案是:理论上可以,实际上几乎不可能。

只有非常简单、状态空间有限的软件,才可能做到“穷尽测试”。

现实是非常非常复杂的,再拿订单系统举例,会有各种各样的:

用户状态:普通用户、VIP用户、黑名单用户、新用户、老用户......

优惠方式:无优惠、优惠券、积分、会员折扣、活动折扣......

这还不算: 网络失败 、 数据库异常 、OOM、 并发 、 超时 、 重试 、 用户重复点击、秒杀.....

各种各样的状态、条件、环境搅在一起,数量会发生爆炸。

人是无法事先把所有的情况都考虑到的,所以无论软件写得多么好,测试多么充分,最后还是有Bug。

为了控制这种复杂度,Bob 大叔教我们使用Clean Architecture、SOLID、Clean Code,教我们如何设计架构,组织整个软件,怎么写出干净的代码,让它长期可维护。

现在Bob 大叔竟然不看代码了,只关注外界的测试和约束,真不知道他是怎么想的。

另外一个面向对象的大师级人物,UML创始人之一,也曾经对Bob 大叔有重大影响的Grady Booch 也不同意Bob的看法。


他说: 测试覆盖率和类似指标可以让我相信这些功能是正确的,但它们完全无法让我相信Agent没有引入糟糕的设计和隐藏的漏洞,对于AI生成的代码,要Trust ,but Verify

03

在《敏捷软件开发:原则、模式与实践》中有一节,标题是“源代码就是设计”,着实让我震惊不已。

测试看到的其实是“软件行为”,代码承载的才是“软件设计”,其中包含大量数据模型、模块边界、复杂度控制、未来变化的能力,这些东西,不一定能通过测试发现。

现在Bob 大叔不再阅读源码,那就是不再阅读设计了,难不成现在他认为测试和约束才是设计了?

最后,欢迎在评论区说说你的看法:AI生成的代码,你会看吗?

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
印度一档时事节目上,主持人 Meher Smaran 当着观众的面发问,中国凭什么不把锂电池技术白白送给印度?

印度一档时事节目上,主持人 Meher Smaran 当着观众的面发问,中国凭什么不把锂电池技术白白送给印度?

怪味历史连连看
2026-10-22 17:26:13
不为人民谋福利,只想着从人民身上拿东西的,都是魔鬼

不为人民谋福利,只想着从人民身上拿东西的,都是魔鬼

娱乐圈见解说
2026-10-22 03:59:19
辽宁省委书记:这次李忠同志来辽宁任职,充分体现了党中央对辽宁省委班子建设的高度重视和亲切关怀、对辽宁振兴发展的悉心关爱和大力支持

辽宁省委书记:这次李忠同志来辽宁任职,充分体现了党中央对辽宁省委班子建设的高度重视和亲切关怀、对辽宁振兴发展的悉心关爱和大力支持

政知新媒体
2026-10-23 00:13:08
8年前,马哈蒂尔叫停了中马铁路合同转向日本,拒绝赔付中国361亿,2026年这条铁路进度达93%,最后结局反转得连狗血剧本都不敢这么写

8年前,马哈蒂尔叫停了中马铁路合同转向日本,拒绝赔付中国361亿,2026年这条铁路进度达93%,最后结局反转得连狗血剧本都不敢这么写

扶苏聊历史
2026-10-22 14:37:54
俄罗斯拒绝和平谈判的提议,拒绝停火,坚持索要顿巴斯全部

俄罗斯拒绝和平谈判的提议,拒绝停火,坚持索要顿巴斯全部

山河路口
2026-10-22 12:28:05
沪上居民忧心忡忡:老人孩子长期受辐射影响!大厦楼顶架设三座通信基站、十余台天线设备,到期了也拆不掉?物业解释→

沪上居民忧心忡忡:老人孩子长期受辐射影响!大厦楼顶架设三座通信基站、十余台天线设备,到期了也拆不掉?物业解释→

新民晚报
2026-10-21 18:52:56
大火逼近中国,日本道歉岂能只道一半

大火逼近中国,日本道歉岂能只道一半

中国能源网
2026-10-22 17:59:09
严查!中央开始对机关事业单位大整顿!这几类人要倒霉了

严查!中央开始对机关事业单位大整顿!这几类人要倒霉了

细说职场
2026-10-22 10:04:29
国少2人被罚下!3-3战平巴林 名记怒骂:裁判胡吹 网友:张耀坤庸才

国少2人被罚下!3-3战平巴林 名记怒骂:裁判胡吹 网友:张耀坤庸才

风过乡
2026-10-23 06:21:02
问界通报M9车速139,网友到事故现场围观:信号灯仅柱子微脏

问界通报M9车速139,网友到事故现场围观:信号灯仅柱子微脏

小星球探索
2026-10-22 13:23:33
谈判桌下捅刀子,内部人递地图:伊朗用12天血亏,替我们台海试了一遍错

谈判桌下捅刀子,内部人递地图:伊朗用12天血亏,替我们台海试了一遍错

浯江孤舟
2026-10-20 09:44:15
“好好学习吧,令爱的长相走不了这条路!”家长晒艺术照,心态崩了!

“好好学习吧,令爱的长相走不了这条路!”家长晒艺术照,心态崩了!

林林先生
2026-10-21 18:10:25
羡慕哭了!宝马裁员8000人,离职补偿金最高达487万元!员工争着离职挤崩系统

羡慕哭了!宝马裁员8000人,离职补偿金最高达487万元!员工争着离职挤崩系统

聊斋新志
2026-10-22 19:28:15
复出5天的小杨哥,撞得“头破血流”

复出5天的小杨哥,撞得“头破血流”

手工制作阿歼
2026-10-23 03:35:00
舆论反转!榆林问界事故,一张现场照片引发争论:角度不同,解读全然两样

舆论反转!榆林问界事故,一张现场照片引发争论:角度不同,解读全然两样

火山詩话
2026-10-23 06:32:23
降维打击!34岁萨拉赫12场狂造15球:率队4连胜 欧战领跑土超争冠

降维打击!34岁萨拉赫12场狂造15球:率队4连胜 欧战领跑土超争冠

风过乡
2026-10-23 07:26:28
曝曼联考虑换帅!已物色替代者 3大待业名帅竞争 高层欲挖角英超2队

曝曼联考虑换帅!已物色替代者 3大待业名帅竞争 高层欲挖角英超2队

我爱英超
2026-10-22 21:35:58
17岁少年手持菜刀威胁28岁舅妈:“让我睡一次,不然死给你看!”

17岁少年手持菜刀威胁28岁舅妈:“让我睡一次,不然死给你看!”

四海神君
2026-10-21 12:00:04
一句流传几十年的口号:“只生一个好,政府来养老”,原来并不是原文

一句流传几十年的口号:“只生一个好,政府来养老”,原来并不是原文

十为先生
2026-10-22 14:26:11
网友用两种方法测算问界M9撞车瞬间车速,结果都远低于139km/h

网友用两种方法测算问界M9撞车瞬间车速,结果都远低于139km/h

西虹市闲话
2026-10-22 14:49:47
2026-10-23 08:11:00
码农翻身 incentive-icons
码农翻身
有趣且硬核的技术文章
324文章数 684关注度
往期回顾 全部

科技要闻

扎克伯格杀回来了,但Meta还没赢

头条要闻

美国间谍被指要伪装成商人卧底中国 五角大楼急忙否认

头条要闻

美国间谍被指要伪装成商人卧底中国 五角大楼急忙否认

体育要闻

卢卡:伦德伯格,欢迎来到NBA

娱乐要闻

芭莎盛典,张小斐因救场实现口碑暴涨

财经要闻

娃哈哈集团董事长许思敏离职

汽车要闻

搭城市NOA/续航555KM 捷达M6上市售7.98万起

态度原创

健康
房产
教育
艺术
家居

痘痘能根治吗?皮肤科医生说实话

房产要闻

租金大跳水!荒了6年,海口这个地标商业,开始急了!

教育要闻

用AI默默守护,温柔照见孩子心事

艺术要闻

故宫藏一幅特殊古画:饱经起落的帝王画钟馗,不是吓人,是送整年好运

家居要闻

2026建博会(广州) 公装联探展交流活动

无障碍浏览 进入关怀版