自从我开始学习面向对象编程以来,我经常阅读文章/博客,说函数更好,或者并不是所有的问题都应该建模为对象。从你个人的编程经历来看,你认为什么时候OOP能更好地解决问题?
发布于 2008-08-09 12:44:59
没有硬性规定。当你更善于解决问题并以面向对象的心态思考时,使用OOP解决问题会更好。面向对象只是另一个工具,它是通过试图使计算成为解决问题的更好工具而出现的。
但是,它可以实现更好的代码重用,也可以产生更整洁的代码。但通常情况下,这些备受赞誉的品质几乎没有真正的价值。将OO技术应用于现有的函数式应用程序可能会导致很多问题。技能在于学习许多不同的技术,并将最合适的技术应用于手头的问题。
OO经常被引用为软件开发的涅盘式解决方案,然而,在许多情况下,它并不适合应用于手头的问题。它经常会导致过度设计问题以达到完美的解决方案,而实际上这并不是必须的。
从本质上讲,OOP并不是真正的面向对象编程,而是将面向对象的思想映射到一种能够支持OO技术的编程语言。OO技术可以由本质上不是面向对象的语言支持,您可以在函数式语言中使用一些技术来利用这些好处。
例如,我已经开发面向对象软件大约20年了,所以我倾向于在解决问题时用面向对象的术语来思考,而不管我写的是哪种语言。目前,我正在使用Perl 5.6实现多态性,Perl 5.6本身并不支持多态性。我之所以选择这样做,是因为它将使代码的维护和扩展成为一项简单的配置任务,而不是一个开发问题。
不确定这是否清楚。在面向对象的法庭上,有些人很努力,在功能法庭上也有一些人很努力。还有一些人尝试过这两种方法,并试图从每种方法中取长补短。两者都不是十全十美的,但它们都有一些非常好的特性,无论使用哪种语言都可以利用。
如果你正在尝试学习OOP,不要只专注于OOP,而是尝试在整个问题解决方案中使用面向对象的分析和一般的OO原则。
发布于 2008-09-19 12:10:09
我是一个老定时器,但也有很长一段时间的OOP编程。我个人反对仅仅为了使用OOP而使用它。我更喜欢对象有特定的存在理由,它们对具体的东西进行建模,并且它们是有意义的。
我遇到的许多新开发人员的问题是,他们对自己创建的代码所消耗的资源没有概念。在处理大量数据和访问数据库时,对于性能和资源来说,“完美”的对象模型可能是最糟糕的。
我的底线是,如果它作为一个对象有意义,那么就将它作为一个对象进行编程,只要您考虑到对象模型实现对性能/资源的影响。
发布于 2008-08-09 09:07:28
我认为它最适合于建模具有状态的内聚性的东西以及这些状态上的相关操作。我想这有点含糊,但我不确定这里是否有一个完美的答案。
关于OOP的事情是,它允许您封装和抽象数据和信息,这在构建大型系统时是一个真正的恩惠。您也可以对其他范例执行相同的操作,但OOP在这一类中似乎特别有用。
这在某种程度上也取决于你所使用的语言。如果它是一种具有丰富的OOP支持的语言,那么您可能应该将其用于您的优势。如果没有,那么您可能需要找到其他机制来帮助将问题分解为更小、更容易测试的部分。
https://stackoverflow.com/questions/6703
复制相似问题