什么是最好的Pro OOP参数?

时间:2010-02-25 15:50:57

标签: language-agnostic oop

我正在尝试让一些团队成员参与OOP思维模式,目前他们正在考虑程序编程。

然而,我很难说“为什么”所有这些都是好的,“为什么”他们应该从中受益。

他们使用的语言与我不同,我缺乏沟通技巧,无法向他们解释这一点,使他们“想”学习OOP的做事方式。

什么是一些好的语言独立的书籍,文章或论据,任何人都可以给予或指出?

10 个答案:

答案 0 :(得分:5)

OOP适用于多开发人员团队,因为它可以轻松实现抽象,封装,继承和多态。这些是OOP的热门词汇,它们是充满理由的热门话题。

抽象:允许团队中的其他成员使用您编写的代码,而无需了解实现细节。这减少了必要的通信量。想想“神话人月”,其中详细说明沟通是开发团队面临的最高成本之一。

封装:允许您更改实施细节,而不会影响代码的用户。因此,它降低了代码维护成本。

继承:允许您的团队以更低的成本重复使用和扩展您的实施。

多态性:允许您的团队使用给定抽象的不同实现。如果您的团队正在编写代码来读取和解析来自Stream的数据,由于多态性,它现在可以无缝地与FileStreamMemoryStreamPigeonStream一起使用显着降低了成本。

OOP不是圣杯。对某些团队来说这是不合适的,因为使用它的成本可能高于不使用它的成本。例如,如果您尝试设计多态性但从未拥有给定抽象的多个实现,那么您可能会增加成本。

答案 1 :(得分:3)

始终举例。

拿一些他们认为不好的代码。重写它会更好。解释为什么它更好。你的同事要么同意要么不同意。

没有人使用(或应该使用)技术,因为它们是很好的技术,他们(应该)使用它们因为它们产生了良好的结果。非常简单地使用类和对象的优点通常很容易看到,例如当你有一个具有n属性而不是n数组的对象数组时,每个字段对应一个你关心的字段,等等。

答案 2 :(得分:2)

将程序与OOP进行比较,迄今为止最大的赢家是封装。 OOP并不意味着你自动获得封装,但与程序代码相比,这样做的过程是免费的。

答案 3 :(得分:1)

抽象有助于管理应用程序的复杂性:仅公开所需的信息。

有很多方法可以解决这个问题:OOP并不是促进这一战略的唯一方法。

当然,并不是因为一个人声称要做OOP而没有丰富的“抽象泄漏”来构建一个应用程序从而打败了策略......

答案 4 :(得分:1)

杀手锏:通过OOP,你可以“按原样”模拟世界*咳嗽*。

答案 5 :(得分:1)

我有点奇怪的想法。我不知道但是可能存在一些区域,其中OOP是不必要的甚至是坏的(非常非常恕我直言:javascript编程)。

您和您的团队可能会在其中一个领域工作。在其他情况下,由于使用oop的团队及其所有好处(如不同的框架,UML等)将会更有效地完成工作,所以多年前你就失败了。

我的意思是,如果你仍然在没有oop的情况下仍能正常工作,那么,也许就这样吧。

答案 6 :(得分:0)

在我处理连接到两个不同数据库的应用程序之前,OOP对我没有意义。我需要一个名为getEmployeeName()的函数用于两个数据库。我决定为每个数据库创建两个对象,以封装针对每个对象运行的函数(没有同时针对这两个函数运行的函数)。不是OOP的缩影,而是一个良好的开端。

我的大多数代码仍然是程序性的,但我更了解对象在我的代码中有意义的情况。我并不认为一切都必须是这样或那样的。

答案 7 :(得分:0)

通过层次结构重用现有代码。

答案 8 :(得分:0)

杀手锏是恕我直言,重新设计代码所需的时间要少得多。这是similar question explaining why

答案 9 :(得分:0)

能够传递整个对象,可以使用该对象调用一堆方法/函数。例如,假设您想要传递一条消息,只需要传递一个对象,获得该对象的每个人都可以访问它的所有功能。

此外,您可以将某些对象的函数声明为public,将某些函数声明为private。还有一个友元函数的概念,其中只有通过OO层次结构相关的对象才能访问其朋友的函数。

对象有助于将函数保存在他们使用的数据附近,并将其全部封装到一个可以轻松传递的实体中。