Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/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
Oop 有多少对象太多了?_Oop - Fatal编程技术网

Oop 有多少对象太多了?

Oop 有多少对象太多了?,oop,Oop,在设计应用程序时,是否会出现对象过多的情况?当您想知道“这到底是一个什么样的对象?”时,您如何确定您何时越过了对象模型的粒度线 我最近有一个“Bet遗忘者”类,我在另一个类中将其重构为两行代码。我不确定整个项目的范围内的答案是什么,但我通常可以看出,如果两个类相互依赖太多,作为一个类可能会更好。不仅对象太多,而且复杂性太高,休息一天后,当我觉得读不懂代码时,我就意识到了这一点。我想说,您可能应该更担心对象/类太少。是值得遵守的,因为它通常会导致更干净、更可读的代码。没有硬性规定,但基本上取决于程

在设计应用程序时,是否会出现对象过多的情况?当您想知道“这到底是一个什么样的对象?”时,您如何确定您何时越过了对象模型的粒度线


我最近有一个“Bet遗忘者”类,我在另一个类中将其重构为两行代码。

我不确定整个项目的范围内的答案是什么,但我通常可以看出,如果两个类相互依赖太多,作为一个类可能会更好。

不仅对象太多,而且复杂性太高,休息一天后,当我觉得读不懂代码时,我就意识到了这一点。

我想说,您可能应该更担心对象/类太少。是值得遵守的,因为它通常会导致更干净、更可读的代码。

没有硬性规定,但基本上取决于程序员的判断。
但是作为一般的经验法则,如果你把时间浪费在为最小的操作编写类上,那么这对很多人来说都是非常复杂的。
如果你写的代码太多,那就太少了。

我认为在不知道你的问题的情况下回答你的问题是不可能的

这在很大程度上取决于您试图用应用程序解决的问题


伊拉姆比兰加绝对正确。如果你开始为你遇到的所有东西创建对象,你很快就会想知道你能给它们什么用,为什么你要花时间来创建它们。

这可能是另一个问题的症状

只要您有良好的项目、名称空间和/或目录组织,以及合理的命名约定,您就应该能够轻松地处理任意数量的类


PS-我假设你所说的“对象”是指“类”。

你永远不会拥有太多的类,问问任何一个像样的Java程序员。

我假设你谈论的是类型,而不是对象(我知道它被称为对象模型,但它确实是所涉及类型的模型)

无论如何,如果您接受单一责任原则,即每种类型只应处理单一责任,那么类型的数量将随着应用程序的增长而增加

但是,由于每个类型的大小有限,它们应该相当容易理解,并且假设您有某种结构,您应该很少(如果有)需要一次查看所有类型


管理大型软件项目就是把事情分解成可管理的部分,并以合理的方式给它们贴上标签。如果你这样做,类型的数量在我的经验中就变得不那么重要了。

一个具有适当OO设计、拥有数百个对象的项目,其状态要比一个拥有较少单一类的项目好得多。

一根字符串有多长?(从中间到末端长度的两倍,但在点旁边)

我认为这真的取决于你在写什么以及你是如何写的。对象的数量是一个糟糕的指标,您应该担心对象模型的复杂性,而不是您有多少对象。你需要问的是你的对象有多紧密地结合在一起

如果您有100个不同类型的Bird对象,所有这些对象都实现了一个接口,并且共享的方法都在一个抽象类中,那么您没有太多的对象,因为您可能需要每个Bird执行不同的操作

但是,如果您有一堆实现相同代码的对象,那么您有太多的对象,可以重构为更少的对象

类似地,如果您有一个包含大量不同功能的大型类,那么您的类就太少了

除非您有做相同事情的类,或者正在复制框架中其他类已经做过的事情,否则就可以了


记住,仅仅因为你可以使用继承并不意味着你必须这样做,组合通常会更好。

我怀疑如果你谈论太多类型,问题会更清楚——否则听起来像是担心在执行时创建数百万类型实例的效率。确实如此,但我们仍然能得到它,因为我们的开发者很聪明!尽管如此,我还是认为这是相对于对象实例的问题。这里的线索是“粒度”一词——如果每个人都是一个好的沟通者的话。1方法?静态void-ForgetBet(Bet-Bet){Bet.forged=true;}