首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >OOP的意义何在?

OOP的意义何在?
EN

Stack Overflow用户
提问于 2008-08-23 14:40:29
回答 25查看 29.2K关注 0票数 126

据我所知,尽管在OOP教育、语言和工具上花费了无数百万或数十亿,但OOP并没有提高开发人员的生产力或软件可靠性,也没有降低开发成本。很少有人严格意义上使用OOP (很少有人坚持或理解诸如LSP之类的原则);人们建模问题域的方法似乎几乎没有一致性或一致性。通常,该类只是用作语法糖;它将记录类型的函数放入它们自己的小名称空间中。

我已经为各种各样的应用程序编写了大量代码。尽管有一些地方,真正的可替换子类型在应用程序中发挥了有价值的作用,但这些都是非常例外的。一般而言,尽管人们口口声声谈论“重用”,但事实是,除非一段代码能做你想要它做的事情,否则几乎没有什么划算的“重用”。以正确的方式设计可扩展的类是非常困难的,因此扩展的成本通常如此之高,以至于“重用”是不值得的。

在许多方面,这并不让我感到惊讶。现实世界不是"OO",OO中隐含的想法--我们可以用某种类别分类对事物进行建模--对我来说似乎有非常根本的缺陷(我可以坐在桌子上、树桩上、汽车引擎盖上、别人的膝上--但这些都不是--椅子)。即使我们转移到更抽象的领域,OO建模通常也是困难的、违反直觉的,并且最终是没有帮助的(考虑圆/椭圆或正方形/矩形的经典示例)。

那么我在这里错过了什么呢?OOP的价值在哪里,为什么所有的时间和金钱都没有让软件变得更好?

EN

回答 25

Stack Overflow用户

发布于 2008-08-23 18:04:50

OOP不是关于创建可重用的类,它是关于创建可用的类。

票数 45
EN

Stack Overflow用户

发布于 2008-09-13 00:14:21

重用不应该是OOP的目标--或者任何其他的范例。

重用是良好的设计和适当的抽象级别的副作用。代码通过做一些有用的事情来实现重用,但不会做太多事情来使其变得不灵活。代码是不是面向对象并不重要--我们会重用有效的代码,而且我们自己做起来也不是微不足道的。这就是实用主义。

将OO作为一种通过继承实现重用的新方法的想法是有根本缺陷的。正如您所注意到的,违反LSP的情况比比皆是。相反,OO被恰当地认为是一种管理问题域复杂性的方法。目标是随着时间的推移系统的可维护性。实现这一点的主要工具是将公共接口与私有实现分离。这允许我们有类似“这应该只使用...”这样的规则。由编译器强制执行,而不是代码审查。

使用它,我相信你会同意,允许我们创建和维护非常复杂的系统。这其中有很多价值,但在其他范例中不容易做到这一点。

票数 32
EN

Stack Overflow用户

发布于 2008-08-23 15:14:09

这是一种编程范例..旨在使我们这些凡夫俗子更容易将问题分解成更小、更可行的部分。

如果你觉得它没有用..不要使用它,不要为培训付钱,要快乐。

另一方面,我确实发现它很有用,所以我将:)

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档