当前位置:
AIGC文章详情

一边说OOP过时,一边面试还在问:2026年,面向对象哪部分还值得你花时间

源自33位全网作者

18:26

最近刷编程社区,会看到一个有点拧巴的场面。

一边是知乎上"面向对象编程是不是过时了"的问题,从今年4月开始一波接一波。7月份,“面向对象编程的弊端是什么"这个老问题被重新顶了起来,浏览量超过247万,高赞回答把OOP的罪状排着队数了一遍:“在今天这个AI大模型全面主导代码生成的时代,如果你依然把面向对象当作默认的万能范式……”。知乎B站上,连芝加哥UnrealFest 2026的演讲《卸载面向对象编程:基于数据的游戏设计与ECS》都有人搬运,评论区一片"早该卸了”。哔哩哔哩

另一边,现实市场纹丝不动:面试帖里,面向对象依旧是Java、C++岗的高频考点;小红书上"面试必背!面向对象核心理解"这类笔记还在被收藏。小红书连黑马程序员去年10月上线的、瞄准AI大模型方向的Python进阶课,播放量130万,课程主体内容之一照样是面向对象。哔哩哔哩

到底是哪边对?刚开始学、或者刚学完面向对象的人,最容易被这种撕裂感晃到:我花几个月啃的封装继承多态,是不是白学了?这篇就把两边的论据都摆出来,给你一个能落地的判断。

先看"过时派"到底在反对什么

把近半年的讨论翻了一遍,过时派的指控主要集中在三条。

第一条:提前抽象,心智负担。一个高赞回答讲了个真实案例:团队来了位推崇严格OOP的架构师,给推荐系统的特征提取设计了一整套深继承树——抽象基类、稠密/稀疏/序列特征子类、验证器、工厂、依赖注入一应俱全。结果算法同学想加一个"实时点击时间差"特征,要新建类、继承基类、重载三个虚函数、去工厂注册枚举、再改依赖注入配置,前后动了七八个文件、写了上百行胶水代码,单元测试写了一整天。一个半小时的小需求,拖了三天。这个回答还引用了那句程序员圈著名的吐槽:为了吃一口香蕉,你不得不把拿着香蕉的大猩猩和整片原始森林都搬过来。知乎

一边说OOP过时,一边面试还在问:2026年,面向对象哪部分还值得你花时间

第二条:对AI不友好。这是2026年最有时代感的一条指控。大模型本质是自回归的序列预测,最擅长逻辑线性、上下文集中的扁平代码;而面向对象的状态是高度分散的——一个对象的行为可能依赖父类的私有变量、构造函数注入的服务、全局单例。答主举了自己的例子:让AI在一个继承四个接口的"订单管家类"里写退款校验,AI直接发疯,调用了只在特定子类才实例化的空指针,还私自篡改了父类的生命周期状态。知乎结论是:写无状态脚本,AI能把效率提三四倍;碰到深继承的企业级老架构,AI反而帮倒忙。

第三条:性能。虚函数表、分散的内存布局、对CPU缓存不友好。这条在游戏引擎、高频交易这类场景最成立,普通业务系统里感知不强。

但"幸存派"最有力的反击,恰恰来自AI

这是整场讨论里最有意思的部分。

一位做代码重构方向的答主提了个反常识的观察:你留意过吗,大模型写代码,特别爱写游离函数(free function)。简单场景没问题,但业务代码里有领域规则、资源权限、事务边界、生命周期。当这一切都被压扁成helpers、utils、ops,“函数仍然能运行,但长期维护中就变成了函数的汪洋,或者说屎山”。知乎他举的例子很具体:用户名校验规则如果是个游离函数,调用者必须自己记住"先校验、再保存",指望AI每次都意识到这一点不太现实,非法用户名照样能绕过去;更稳的设计是让类型自己负责构造合法实例——非法用户名根本进不来。面向对象"保护状态和不变量"的能力,恰恰是AI生成代码时最缺的那一环。

另一个高赞回答则把Alan Kay请了出来:OOP这个词的发明者,2003年在一封被广泛引用的信里说得明白,面向对象对他而言意味着消息传递、状态的保护与隐藏、极端的迟绑定——而不是后来被简化成的"封装、继承、多态"三件套,更不是"万物皆对象"。知乎也就是说,今天很多人骂的那个OOP,连它爹都不认识。

一边说OOP过时,一边面试还在问:2026年,面向对象哪部分还值得你花时间

两边吵得凶,但有三件事其实是共识

把两边的话放在一起对照,会发现争论没有表面上那么大。

共识一:组合优于继承。这根本不是新结论,1994年GoF那本《设计模式》里就写着"优先使用对象组合而非类继承"。2026年连替继承辩护的人都承认,组合优先是降低耦合的合理建议。知乎激进的干脆说"AI时代,组合100%优于继承"。知乎真正被淘汰的是深继承树,不是面向对象本身。

一边说OOP过时,一边面试还在问:2026年,面向对象哪部分还值得你花时间

共识二:过度设计是坏东西。"如何学习设计模式"这个问题下最有画面感的故事是:答主看完书感觉能力爆棚,给日志模块一口气引入单例、工厂、观察者三种模式,简单需求直接变成迷宫。知乎而反对设计模式的回答里也在骂同一件事:"公司代码里的设计模式,大部分是前任练手的玩具代码。"两边骂的是同一种行为。知乎

共识三:没人主张什么都不学。连措辞最激进的过时派,结论也是"在AI时代,面向对象的大部分特性应该限制性使用"——是限制性使用,不是停用。知乎

我的判断:他们吵的根本不是同一个OOP

把证据捋完,我的结论是三句话:

第一,真正过时的是"万物皆对象、一切靠继承"的教条——先画类图、先搭继承树、先背23个模式再动手的那套仪式感。这部分批评证据充分,而且跨阵营认同。

第二,面向对象的核心价值——封装状态、保护不变量、在边界上做抽象——没有被替代。AI写代码的时代里它反而更值钱了:AI产出代码的速度越快,"谁来设计边界、谁来审查结构"的问题就越突出。不懂抽象的人,连AI写的代码好坏都看不出来。

第三,对个人来说,"学OOP"和"用AI干活"从来不冲突。冲突的是"花三个月苦练深继承设计、背模式八股"这种时间分配方式。

一句话总结:值得学的面向对象,是画边界的能力,不是搭层级的习惯。

值得花时间清单

值得花的:

  • 封装与接口思维。这是读懂任何现代框架、审查AI生成代码的最小单元。

  • 多态与抽象思维。面试高频考点没变,也是看懂大型代码库的地基。

  • 组合优于继承,以及它在你常用语言里的实际写法。

  • 读主流开源库的源码结构。看看成熟项目怎么画边界,比看十篇教程都管用。

一边说OOP过时,一边面试还在问:2026年,面向对象哪部分还值得你花时间

值得省着花的:

  • 手动设计深继承树。不写框架的话,业务代码里你几乎碰不到,碰到也该重构。

  • 23个设计模式为了背而背。社区共识已经很清楚了:模式是遇到问题时拿来用的,不是提前表演用的。

  • 需求还没稳定就动手抽象。先跑起来,等同类需求改了三次再谈设计。

不用急着碰的:

  • 范式战争。OOP对函数式对数据导向,不影响你发工资,真实项目本来就是多范式混用。

  • "面向对象彻底没用"这类极端结论。目前既没有面试市场的证据,也没有教育市场的证据支持它。

分人说的话

学生和正在求职的:照常学,面试题库没变。但把重心从"背定义"挪到"能举例子讲权衡",再准备一个"过度设计踩坑"的故事——2026年的面试官更想听这个。

工作1-3年的:不用回头补理论课。直接拿AI生成的代码练手:AI丢给你一堆utils的时候,判断哪些函数其实该升级成带状态、带不变量的类型。这是眼下性价比最高的训练。

重度AI辅助编程用户:看的能力比写的能力值钱。面向对象学到"能一眼看出这段代码没有主人"的程度,就够用了。

接下来可以盯着的信号

一是主流语言是否继续往"扁平、数据友好"的方向演化,这会直接影响AI协作的代码风格;二是面试题库的变化,如果AI相关问题开始挤掉传统设计题,学习优先级要跟着调;三是AI代码生成领域的工程实践,会不会反过来把对象式的结构约束喂给模型——两边其实已经在互相渗透了。

面向对象没有死,它只是换了个活法。这个判断,目前的证据撑得住。

内容由AI生成
0
扫一下,分享更方便,购买更轻松
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

最新文章 热门文章