2008-09-10 70 views
8

我的问题很简单;是否有可能超过面向对象的代码?是否可以结束OO?

多少太多了?为了面向对象,您为什么放弃可读性和可维护性?

我是一个巨大OO的人,但有时我怀疑我是不是过于复杂我的代码....

的思考?

+0

好问题,但对于没有讨论的合理答案来说有点过于模糊。这就是为什么最好的答案是一个简单的'是'。 – 2008-09-10 15:13:41

+0

“对象定位”是不正确的用法。 “对象定向”是正确的。 “定位”不是一个字。 – 2008-09-10 15:18:31

+0

过度设计是万恶之源 – Jonathan 2008-09-10 15:45:31

回答

28

是完全能够在面向对象的代码

2

如果你发现在你的项目中全面贯彻OO所需的时间不必要导致错过了最后期限,那么是的。

发布软件和完​​整的面向对象保真度之间必须有一个权衡。如何决定取决于人员,团队,项目和运行项目的组织。

2

是的,当然有:-)面向对象的技术是一种工具......如果你在给定的工作中使用了错误的工具,那么你会过度复杂化(当你需要的只是一把刀时, 。

对我而言,我根据项目的规模和范围来判断“多少”。如果它是一个小项目,有时会增加太多的复杂性。如果项目很大,你仍然会承担这种复杂性,但它会在易维护性,可扩展性等方面付出自己的代价。

1

是的,这绝对是可能的 - 通用的。我曾经和一个创建数据结构的人合作绑定到一个下拉列表 - 这样他可以让用户选择一个性别。诚然,如果可能的性别列表发生变化,这将是有用的,但他们还没有(我们不住在加州)

2

我的建议是不要过时。这通常会导致超出或低于做某些事情(如果不是OO)。我经常使用的经验法则是:如果它让问题更容易缠绕我的头,我使用一个对象。如果另一个范例比我使用对象更容易缠绕头部,那么我使用它。

这个策略还没有让我失望。

0

我想这是可能的,但它很难回答你的抽象术语(没有双关语意)。举一个超过OO的例子。

0

我认为有些时候OO设计可以采取极端,甚至在非常大的项目中使代码更少的可读性和可维护性。例如,可以在鞋类基类中使用,以及运动鞋,服装鞋等的儿童类。但是,我已经阅读/审阅了人们的代码,看起来他们似乎正在为NikeSneakers创建类的极限和ReebokSneakers。当然,两者之间存在差异,但为了具有可读性和可维护性的代码,我相信它有时会扩展一个类以适应差异,而不是创建新的子类来处理差异。

3

如果您认为更多的对象更面向对象,那么是的。

在做面向对象的设计时,有一些力量需要平衡。面向对象设计的大部分是关于减少和处理复杂性。所以如果你得到非常复杂的解决方案,你不会做太多的面向对象,但是你做错了。

1

是的,就像人们可以过度规范数据库设计一样。

这似乎是永远不会结束的纯粹主义和务实主义辩论之一。 <:S

1

很多人试图设计自己的代码,以获得最大的灵活性和重用性,而不考虑其可能性。相反,根据你正在编写的程序打破你的课程。如果您只有一个特定对象的实例,则可以考虑将其合并到包含对象中。

0

是的,而且很简单。代码不是简单的因为它是面向对象的,不仅仅是因为它是模块化的或者功能性的或者通用的或者生成的或者基于数据流的或者面向方面的或者其他任何东西而更好。

好的代码是很好的代码,因为它在编程范例中设计良好。

良好的设计需要照顾。

小心需要时间。

您的情况的一个例子:我已经看到了其中的Java的恐怖片,在名称 的是“面向对象”,每个类实现了一些接口,即使没有其他类将永远实现该接口。有时候这是一种黑客攻击,但在其他情况下,它确实是无偿的。

无论您编写代码的过程如何,过分参与太多好东西,都会使代码比问题复杂化。有些人会说,当达到这一点时,代码甚至不是真的,例如,面向对象了。

面向对象的代码应该更好地组织起来,以便更简单,更直接或更容易理解和消化合理的独立部分。使用面向对象编码机制与此目标相反不是导致面向对象设计

0

我认为明确的答案是肯定的,但取决于您所指的域名,它可能是真的是,或者更少。如果您正在构建高级的.Net或Java应用程序,那么我认为这就是后者,因为OO基本上已内置于该语言中。另一方面,如果您正在开发嵌入式应用程序,那么您的操作过度的危险性和可能性非常高。没有什么比看到一个真正的高层次人物进入一个嵌入式项目更复杂的东西,他们认为是丑陋的,但是最简单快捷的方式来做事情。

1

我认为你的问题应该是:“你能在体系结构的应用程序吗?”

当然,答案还没有。面向对象只是一种设计方法。如果你花时间在系统中增加不必要的复杂性,因为“Polymorphism Rocks!”。那么是的,也许你已经完成了OOing。

非常XP答案是不管你的方法是什么青睐(OO,程序等。)该设计应该只有如明显需要的那样复杂

1

是的,你可以。作为一个例子,如果你在你有两个子类型之前发现你自己创建了接口或抽象类,那么你就过度了。我经常在开发人员(先)设计前面看到这种想法。我使用测试驱动开发和重构技术来避免这种行为。

1

是否有可能超过面向对象的代码?

不,但它可能使您的代码复杂化。例如,为了使用设计模式,您可以使用设计模式。但是你不能对你的代码进行对象定位。你的代码是面向对象的,或者不是。正如你的代码设计得很好或者它不是。

0

我认为任何事情都可以“过度”。几乎所有我能想到的最佳做法都是如此。我看到继承链非常复杂,代码实际上难以管理。

相关问题