面向对象编程被批是“灾难”,为什么这么多开发者讨厌它?| 话题

发起人:刘燕
10 人讨论
3774 人围观

面向对象编程(OOP)已经存在了很长时间。有人喜欢它,有人讨厌它,但目前面向对象编程目前面临的一个尴尬是:讨厌它的人似乎比喜欢它的人多。这到底是为什么呢?


此前,InfoQ 发布了一篇题为《为什么有这么多开发者讨厌面向对象编程》的文章,文中提到,一位高级全栈工程师 Ilya Suzdalnitski 发表了一篇 6000 字的 OOP 批判文章,没想到意外收获 50 万阅读和一众程序员“赞同”的声音。


Suzdalnitski 给 OOP 列出了数宗“罪”:


OOP 是“万亿美元的灾难”;


OOP 没能把它本应该要解决的问题解决好,反而把事情变得更加复杂。OOP 代码的变量及其可变状态“在不同的对象之间被随意共享;


在大多数情况下,OOP 代码最终会变成带有全局状态的大泥团,任何人都可以随意修改它;


面向对象代码难以重构,也难以进行单元测试。写出好的、可维护的面向对象代码很难,程序员宝贵的时间和精力都花在思考‘抽象’和‘设计模式’上,而不是解决现实世界中的问题。



Suzdalnitski 还在文章最后指出, OOP 的竞争编程范式—函数式编程将是更好的选择。


你喜欢用 OOP 吗?如果不,你讨厌它的理由是什么?你认为 OOP 更好还是函数式编程更好?欢迎在下方评论区互动留言。




欢迎大家在评论区留言,我们将为留言区点赞数最高的同学送出 《测试工程师全栈技术进阶与实践》一本,点赞统计截至 2019 年 9 月 16 日。任何与活动相关问题,请联系小助手微信号:Infoqzone2。


讨论 (10 条讨论)

发布
用户头像
ooa、ood、oop了解一下
2020 年 09 月 23 日 18:59
回复
用户头像
还是函数式的代码直观易读,一个同事写的代码把各种设计模式组合起来,对象变化太难预料了,读代码时真的很费神,代码注释不够的情况下,你很难在不通读整个代码逻辑的情况下知道一个方法干了什么,会有什么结果。函数式就比较易读,阅读代码时,即便注释比较少,也不太需要完全通读整个函数,就能比较快的知道会得到什么结果。
2020 年 06 月 24 日 11:10
回复
用户头像
函数编程也不能解决小编提到的问题,他也会形成大泥团,他的可读性在复杂场景下也会很差。OOP就好像瑞士军刀,看使用者怎么去使用他。使用者不能很好利用他,反过来抱怨军刀。事实上面就没有一个完美无缺的方案。
2019 年 10 月 16 日 13:13
回复
胡说,先去买几本FP的书籍读读再来说,point free不易读还有什么易读?FP的代码完全是从头到尾读,等号左边是概念名词,等号右边是表达式,靠类型签名就可以获得很多信息,这叫引用透明,而OO还要画类图搞清关系。
2020 年 03 月 24 日 02:09
回复
用户头像
目前接触到的项目都是面向对象的形式组织的,马上去看看函数式的优点。不过,我觉得不管那种模式,都有其利弊吧。
2019 年 09 月 12 日 20:28
回复
楼主说的不错
2019 年 09 月 12 日 21:41
回复
面向对象未来会被更好的模式取代么?期待!
2019 年 09 月 13 日 11:25
回复
恭喜中奖《测试工程师全栈技术进阶与实践》一本~
2019 年 09 月 17 日 16:12
回复
用户头像
开发问题的讨论,送测试的书,有点意思~

1. 不喜欢OOP
2. 但也不讨厌
3. 都好
2019 年 09 月 12 日 16:34
回复
用户头像
能不面向就不面向,一个函数就干一件小事
2019 年 09 月 11 日 13:54
回复
没有更多评论了