我经常听到它说的是,物体没有在代码重复使用方面传递。你同意吗?如果您相信他们还没有,为什么不呢?

有帮助吗?

解决方案

不,不一定。

对象提供更好的语义,代码/功能的组织以及可能的易用性。

设计精良 交付代码重复使用的承诺,而不是对象本身。

其他提示

老实说,我不确定“代码重用”是否真的是任何人所追求的(或至少应该追随的)。我的理念是“软件组件”,这意味着通过良好的接口和避免不必要的耦合来更好地维护性。 “代码重复使用”有时是从中掉出来的事情之一 - 不必要的重复代码表明您以错误的方式组织了事情,当然要维护的痛苦。

为了更直接地回答这个问题,有一系列非常好的工具来避免重复自己:继承,特质,授权,高阶功能等。如果您问我,它们也倾向于过度使用它。也许这就是一些“糟糕”的氛围来自的地方:寻找继承被困在没有自然权利的地方:)

不,“对象”并没有使代码重复使用任何更轻松或更常见。同样的担忧可以防止代码在模块化程序中重复使用(设计,测试和记录通用API比编写一次性的例行程序需要更为前期的努力,并且所有交易的杰克可能是无主 - 旨在重复使用的逻辑可能无法对其实际使用的用途进行优化),以适用于OO程序,另外的担忧是,设计不佳的对象模型可能会妨碍重复使用其他可重复使用的对象代码。

oo是一个方便的抽象,这是一个很多问题,但要警惕80年代90年代的炒作:它并没有像您在睡觉时神奇地解决我们贸易的基本问题。

我不希望所有对象都被重复使用,但是我们确实有很多对象在许多不同的项目上重复使用。我们还拥有仅在一个项目上重复使用的对象。我们通常会从点击式桌面应用程序,网络应用程序和手机应用程序中使用相同的业务对象(或数据传输对象)以及同一项目的手机应用程序的业务逻辑对象。

您在哪里听说OO不会在重复使用方面交付?那是什么原因?也许他们的物体的设计迫使他们陷入了这种情况...

一些程序员将以任何语言和样式复制和粘贴。

真正好的程序员几乎可以避免使用大多数复制和粘贴。

我发现OO模式倾向于鼓励重复使用。我已经看过以非OOO样式编写的Java代码(由于糟糕的ORM,数据与代码分开了),并且重复使用确实很痛苦 - 但在OO中,同一程序员在设计方面做得更好(并重复使用)。

同样,如果我们使用非OO模式或OO抗patters,例如setter/getters,switch语句,匿名内部类,巨大的功能,以及我所看到的代码重复使用掉下来,然后样板上升……显着。

PS。我知道人们会在上一段中遇到问题,所以我会说一点。

设置器和Getter会引起OO问题,因为它们允许您在对象的成员(对象应操纵自己的成员)上操作该分布在其他类上在类上运行的代码。这也适用于属性 - 只是因为属性更容易使其在所有情况下都变得“好”。

根本无法重复使用匿名内部类中的代码,人们忘记了许多事情(例如听众)可以并且应该是成熟的类 - 这也适用于封闭!如果您使用匿名的内部类来实现诸如侦听器之类的东西,那么您更有可能复制和粘贴实现您的实现,而不是将代码提取到方法或其自己的类中并称其为单位。封闭也可以提高可重复性 - 仅取决于您的使用方式。

在许多情况下,您可用的功能塑造了您的代码的结构方式。在帮助您可视化所有代码及其相互作用时,OO更强大,但这是另一个问题。

对象没有比楼梯或其他健身设备能够减轻体重的能力。开发人员必须有动力正确使用工具。

一旦软件团队在重复使用测试的代码方面具有更高的价值,而在将所有细节保持在他们的脑海中,您就会看到更细粒度的对象和方法,因此更多的代码重复使用。

是的

OOP为您提供更多重复使用代码的方法

没有银弹

这取决于

关于您投入的内容以及您期望的回报!

是的。良好的面向对象的编程可促进关注点,低耦合,高凝聚力和信息隐藏的分离。这些事情对于可重复使用的代码至关重要。

我认为OOP的主要好处是模块化和可修改性,而不是重复使用,但这是另一个问题。

对象启用代码重新编号,但因此并不是最大的技术。我认为代码重复使用是通过与对象相关的技术(例如继承,多态性,过载和模板)促进的。

是的,他们确实如此,从超级类Cleary延伸(继承)有助于代码重复使用的能力,我不确定任何人如何争论。您可以简单地扩展一堂课并覆盖一种方法,同时使用超级类中的其余方法,如果这不支持代码重复使用,那么我不知道什么是

如果他们已经兑现了到目前为止的代码重复使用的承诺吗?是的,如果考虑到OOP编写的程序明智地应用设计模式。否则,主要是没有。但是,查看大规模的非琐碎程序的普及,Adobe Systems,Google等使用C ++或Java或其他OOP语言写作,我想说的是OOP还有很长的路要走。那个时候将更适合提出这个问题,并可以为新范式提供地面工作。

许可以下: CC-BY-SA归因
scroll top