面向对象编程的弊端是什么?

当前很多资料都在讲述面向对象的优点,可是在软件开发或者大型软件项目中,面向对象却带来了巨大的类关系设计开销,但具体有何弊端却没有详尽的介绍。相关问题:面向对象编程(OOP)的价值与优点是什么?
关注者
7475
被浏览
655211

228 个回答

OOP 实际上就是为了解决 Polymorphism 这个元问题,即:
如何让我的函数可以适用于多种类型,而不用关心这些类型的细节?
只是看来,「类继承」这个 JAVA 等语言试图给出的答案似乎并不是很好。未来的语言设计很可能是 Parametric Polymorphism 的大举回归,加上 Bounded quantification 处理各种的「界」。
从我个人来说,经常遇到的一个问题是oo和并行的冲突。oo要封装,并行要开放。oo要array of struct/class,并行要struct of array。以至于很多时候为了上CUDA等大规模并行,得把原有数据结构做大规模修改。

不过如果习惯了并行优先,那会把程序设计成数据和操作分离的模式。不那么oo但结构仍然清晰。