Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Language agnostic 支持OOP的最佳参数是什么?_Language Agnostic_Oop - Fatal编程技术网

Language agnostic 支持OOP的最佳参数是什么?

Language agnostic 支持OOP的最佳参数是什么?,language-agnostic,oop,Language Agnostic,Oop,我试图让两个团队成员了解OOP思维,他们目前从过程编程的角度思考问题 然而,我很难理解“为什么”这一切都是好的,以及“为什么”他们应该从中受益 他们使用的语言与我不同,我缺乏沟通技巧,无法向他们解释这一点,让他们“想要”学习OOP的做事方式 任何人都可以给出或指出哪些与语言无关的优秀书籍、文章或论据?抽象有助于管理应用程序的复杂性:只公开所需的信息 有很多方法可以做到这一点:OOP并不是促进这一战略的唯一原则 当然,并不是因为一个人声称要进行OOP,他就在没有大量“抽象漏洞”的情况下构建了一个应

我试图让两个团队成员了解OOP思维,他们目前从过程编程的角度思考问题

然而,我很难理解“为什么”这一切都是好的,以及“为什么”他们应该从中受益

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


任何人都可以给出或指出哪些与语言无关的优秀书籍、文章或论据?

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

有很多方法可以做到这一点:OOP并不是促进这一战略的唯一原则


当然,并不是因为一个人声称要进行OOP,他就在没有大量“抽象漏洞”的情况下构建了一个应用程序。

从而挫败了这一策略。

将过程与OOP相比较,迄今为止最大的赢家是封装。OOP并不意味着您可以自动获得封装,但与过程代码相比,实现封装的过程是免费的。

直到我在开发一个连接到两个不同数据库的应用程序时,OOP才对我有意义。两个数据库都需要一个名为getEmployeeName()的函数。我决定创建两个对象,每个数据库一个,以封装针对每个对象运行的函数(没有同时针对这两个对象运行的函数)。这不是OOP的缩影,但对我来说是个好的开始


我的大部分代码仍然是过程性的,但我更清楚对象在代码中的意义。我不认为任何事情都需要这样或那样。

杀手短语:使用OOP,你可以“按原样”建模世界。

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

杀手论点是,重新设计代码所需的时间要少得多。这是一个。我有一个奇怪的想法。我不知道,但可能存在一些OOP不必要甚至不好的地方(非常非常IMHO:javascript编程)

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


我的意思是,如果没有oop,您仍然可以很好地工作,那么,也许,就离开它吧。

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

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


对象有助于使函数靠近它们所使用的数据,并将其封装到一个可以轻松传递的实体中。

面向对象编程对于多开发人员团队来说很好,因为它可以轻松地进行抽象、封装、继承和多态。这些都是OOP的热门词汇,它们是有充分理由的热门词汇

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

封装:允许您在不影响代码用户的情况下更改实现细节。因此,它降低了代码维护成本

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

多态性:允许您的团队使用给定抽象的不同实现。如果您的团队正在编写代码以从
读取和解析数据,那么由于多态性,它现在可以无缝地使用
文件流
s、
内存流
s和
鸽子流
s,并且大大降低了成本

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

总是举例说明

从你认为不好的代码中提取一点。把它重写得更好。解释为什么它更好。你的同事要么同意,要么不同意


没有人使用(或应该使用)技术是因为它们是好的技术,他们使用它们是因为它们产生了好的结果。非常简单地使用类和对象的优点通常很容易看到,例如,当您有一个具有
n
属性的对象数组而不是
n
数组时,您关心的每个字段对应一个数组,等等。我认为这场讨论是在15年前的事。@罗曼:25年前我把它放在C++出现的时候。这些家伙在用什么语言,TurboBasic?现在是2010年,OOP在这一点上已经非常成熟了。什么?有一个新的,面向对象版本的Turbo Basic??我必须拥有它@soulmerge:它被巧妙地重命名为“VB.Net”。这就是我使用它的原因。世界就是这样运转的。世界不是一系列的管子。我一直认为世界是程序性的。我一次只能做一件事,很难说世界是什么样子。如果你甚至不能定义这个世界是怎样的,那么你怎么能说你可以对它进行建模呢?最后我咳嗽了一声-你没听到吗DNo,我们并没有按照世界的现状来建模。我们为世界的抽象建模。此外,OOP不是生成世界抽象模型的必要条件+