.net 一个类中有多少对象太多?

.net 一个类中有多少对象太多?,.net,vb.net,oop,object,.net,Vb.net,Oop,Object,我对OO编程的概念相当陌生——实际上,一般来说,我还是一名学生。我目前在一个部门实习,该部门让我编写一个新的结构,这可能是他们所有申请的基础。因此,我相信我在OO背后有一个想法,即创建“基本构建块”,然后展开、展开、展开,直到到达最复杂的对象(目前为止) 我需要将所有这些“高级”对象放在一个对象中,但有多少个对象太多了?如果这个更大的物体需要所有这些“部件”,我可以在里面放100个物体吗 我真的希望这个问题对每个人都有意义。我相信答案也不会是一个明确的答案,但我只需要一个经验法则。如果有更好的设

我对OO编程的概念相当陌生——实际上,一般来说,我还是一名学生。我目前在一个部门实习,该部门让我编写一个新的结构,这可能是他们所有申请的基础。因此,我相信我在OO背后有一个想法,即创建“基本构建块”,然后展开、展开、展开,直到到达最复杂的对象(目前为止)

我需要将所有这些“高级”对象放在一个对象中,但有多少个对象太多了?如果这个更大的物体需要所有这些“部件”,我可以在里面放100个物体吗

我真的希望这个问题对每个人都有意义。我相信答案也不会是一个明确的答案,但我只需要一个经验法则。如果有更好的设计/编程技术的话,我真的不喜欢在一个大对象中包含100个对象

多谢各位

编辑1:非常感谢您的回复,但我还是有点不清楚。我已经标记了一个答案,因为我觉得我可以继续我所拥有的,但是

让我继续以我的人类为例。人由许多部分(或物体)组成,每个部分也由部分组成,一直到单个细胞

人类-->手臂-->手-->手指-->拇指-->骨骼-->骨细胞

人类:ojbLeft_手臂、objRight_手臂、objLeftLeg、objRightLeg、objBrain、objHeart、objLeft_眼睛、objRight_眼睛。。。。明白我的意思吗?人类对象中有多少对象太多?很明显,这个人类物体将被认为是巨大的,因为人类是非常复杂的。您是否将手臂和腿部对象分解为对象,然后存储它们


我想这是另一个问题:如果你不想要很多对象,你如何避免它们呢?

100个对象在一个对象中并不是绝对不合适的,但它明确地表明可能有更好的方法来做到这一点。考虑将相似对象分组为复合对象,其中功能类似于最终的“超级对象”中的使用。根据经验,在一个类中引用的对象的数量是对该对象复杂性的(粗略)估计;100表示复杂性太高。请注意,您可以通过将对象分组到复合对象中来降低有效的复杂性,从而增加总体对象计数,但减少“superobject”中的直接引用计数

编辑以回应OP的编辑和问题:分组的关键在于您的预期使用情况和您的问题域。考虑一下你的例子;对象模型的适当细分实际上取决于数据模型的使用情况。这里的关键是认识到你并不是在试图表现所有可能的对象或潜在的现实;您正在创建适合预期用途的表示。例如,如果您正在为心脏病专家建模一个人,可能需要一个人体对象,在该对象下您将有一个心脏对象、一个循环系统对象等。;在心脏对象下,可能有左心室、右心室等。。然而,对于一个牙医来说,你的模型的顶部仍然有一个人,但这个人可能会在下一个层次收集牙齿;牙齿可能包括犬齿、门牙等物体


这里的关键是,底层对象(人)是相同的;代表性是完全不同的。你的心脏病专家不关心你的牙齿,你的牙医也不关心你的心室用法定义表示。因此,对于您的情况,您必须准确地确定您的用法是什么,并且该用法(希望)可以定义表示的清晰路径。

程序员能够记住的内容是有限的

一个类中不应该有100个成员的原因是维护太困难了。
没有一个程序员能够记住所有的成员,这些东西就会开始被忽略。
您应该尝试将成员分成更小的逻辑组,并将其存储为成员

史蒂夫·麦康奈尔(Steve McConnell)在书中提到了这个问题“

对包含 超过七个数据成员 已发现数字“7±2”为a 一个人可以使用的离散项的数量 执行其他任务时请记住 (米勒1956年)。如果一个类包含 超过7名数据成员, 考虑是否应该上课 分解成多个较小的 课程(Riel 1996)。你可能会犯错 如果 数据成员是基本数据类型 像整数和字符串一样,更倾向于 如果数据 成员是复杂的对象


您所描述的是一个反模式,称为
上帝对象
。隐马尔可夫模型。。。也许你还不应该把整个公司的未来建立在这个数据结构上。做,观察,学习,然后再做一次,冲洗和重复。首先,这不是公司的未来,而是一个充满业余程序员的部门。基本结构已经在最近完成,但我在这方面有所帮助,在看到其他系的技术(实际的CSE专业的工作)后,我想改进代码来自学,帮助系里不要陷入混乱。至于“上帝对象”,我觉得这就是我正在做的,但是当你想到它时,有时候这样不好吗?假设我正在创建一个“人类”类。然后,我需要创建其他对象:眼睛、心脏、手等。然后,对于我的“人类”对象,我需要将这些部分放在正确的位置。请您对我的编辑进行评论?我想你说的是我做这件事的方式,但我仍然不清楚。如果我明白你说的复合对象是什么意思