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

2019 年 9 月 10 日

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

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


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


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


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


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


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


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



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


你喜欢用 OOP 吗?如果不,你讨厌它的理由是什么?你认为 OOP 更好还是被函数式编程更好?


2019 年 9 月 10 日 18:091343

评论

发布
暂无评论
发现更多内容

我的编程之路 -6(新时代)

顿晓

android 编程之路 时代

重学 Java 设计模式:实战单例模式

小傅哥

设计模式 编程思维 重构 优化代码

ARTS - Week Two

shepherd

js algorithm

奈学:传授“带权重的负载均衡实现算法”独家设计思路

奈学教育

分布式

像孩子一样认识新事物 —— 读《终身幼儿园》

YoungZY

学习 读书笔记 读书

美团可能会强势涉足 ToB

罗小布

创业 互联网巨头 深度思考 互联网

每个人都是领导者的工程团队

hongfei

# LeetCode 863. All Nodes Distance K in Binary Tree

liu_liu

算法 LeetCode

Flutter开发环境配置

玉龙BB

flutter android vscode

# LeetCode 215. Kth Largest Element in an Array

liu_liu

算法 LeetCode

你不知道的SSD那些事

焱融科技

分布式 存储 SSD nvme

ARTS-01

NIMO

ARTS 打卡计划 ARTS活动

5G时代下应用的安全防御研究

Nick

5G 5G网络安全 5G安全

如何做好Code Review?

flyer0126

Code Review

爬虫框架Scrapy应用实践-淘宝保险频道数据抓取【2】-抓包分析

hadesxiong

Python 爬虫 保险 Scrapy

ARTS-1

你当像鸟飞往你的山

ARTS 打卡计划

关爱孩子的心理建设

Neco.W

人生 感悟 教育

眼中有码,心中无码

小眼睛聊技术

学习 深度思考 程序员 最佳实践 算法

【Java 25周年有奖征文获奖名单公布!!!】关于Java,你最想赞扬、吐槽、期待的变化是什么?

InfoQ写作平台

写作平台 Java25周年 活动专区

MySQL 可重复读,差点就我背上了一个 P0 事故!

楼下小黑哥

Java MySQL

那些会阻碍程序员成长的细节[2]

码闻强

程序员 程序人生

线程池续:你必须要知道的线程池submit()实现原理之FutureTask!

一枝花算不算浪漫

源码分析 并发编程

Vue生态篇(一)

shirley

Java Vue

深入计算机底层,从几本靠谱的书开始

HackMSF

计算机工作原理

ARTS week 3

刘昱

DDD 中的那些模式 — 使用 Specification 管理业务规则

Joshua

设计模式 领域驱动设计 DDD 架构模式

知识也会生宝宝?

史方远

个人成长 随笔杂谈

Mysql索引不会怎么办?6000字长文教会你

Super~琪琪

MySQL 数据库 sql 索引

数据产品经理实战-数据门户搭建(上)

第519区

数据中台 开发数据

我为什么开始技术写作?

flyer0126

技术创作

我常用的浏览器插件

彭宏豪95

chrome 效率工具 浏览器 插件

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