是否存在“class 膨胀”之类的东西 - 即太多 class 导致效率低下?

Is there such a thing as ‘class bloat’ - i.e. too many classes causing inefficiencies?

例如假设我有以下 classes:

然后 Item 对象将与 ItemProperty 相关,而 ItemChoice 对象将与 ItemPropertyOption(以及 ItemProperty 相关ItemPropertyOption指的是可以推断)。

这样做的原因是我可以更有效地使用查询。即给我所有 Red 的项目选择。它还允许我使用 Parse Dashboard 快速向站点添加元素,因为我可以轻松指定更多 ItemPropertys 和 ItemPropertyOptions,而不必在代码库中添加它们。

这只是一个小例子,还有很多我想使用 classes 的实例,这样 'options' 表单中的各种下拉菜单都在数据库中,并且可以轻松地由我添加和编辑,而不是硬编码。

1) 对于 5 种以上类似的 class-结构

,我可能会以类似的方式执行此操作

2) 可能有数百个我想通过“反向查询”访问的嵌套属性

所以,我可以想到 2 个导致效率低下的潜在原因,并想知道它们是否成立:

我能想到的另一个选择——如果“class-膨胀”真的是一个问题——是在父 classes 上创建字段,而不是嵌套在其他 classes(表示更多属性,如上所述),只是将它们直接表示为嵌套 JSON 属性。

Is having lots of classes inefficient?

对于必须记住所有这些 classes 所做的事情以及它们彼此之间的关系的穷人来说,这肯定是低效的。首先要写所有这些 classes 需要时间,而且你写的每一行都是必须维护的一行。

除此之外,在任何 OOP 语言中,每个 class 肯定会有 一些 的成本,并且创建比您真正需要的更多 class 将意味着您为所做的工作支付的费用超过了您需要支付的费用,这几乎就是低效的定义。

I’ll probably be doing this in a similar way for 5+ more similar kinds of class-structures

也许您可以花一些时间思考这些案例之间的相似性,并想出一组更灵活的 classes,您可以在所有这些案例中使用。编写通用代码比编写非常具体的代码更难,但如果你做得好,你将通过重用多次收回额外的努力。

设计的工作是在对象描述中呈现与系统要求相关的关于世界的真相。在 OP "items" 的世界里,项目有颜色是事实,而且这是一个相关的事实,因为用户关心项目的颜色。如果系统消耗了它 不需要 消耗的计算资源,您只会称系统效率低下。

因此,对于像配置器这样的东西,我们有项目,这些项目有属性,这些属性有一组可枚举的可能值,这听起来像是一个完全合理的设计。

是低效还是"bloated"?我唯一会怀疑的地方是项目具有属性的明确断言。他们当然会这样做,但是 javascript 对象和解析实体本身就是如此。

换句话说,您也许可以只使用项目和 属性选项的几种口味:例如Item 有一个名为 "colorProperty" 的属性,它是指向 "ColorProperty" 实例的指针(其实例的名称为 属性,如 'red'、'green' 等,并且可能会描述其他相关事实,例如更精确的 RGB 形式描述)。

很多 类 如果它们代表了相关的事实,那没有错。先做那个。您可能会根据经验发现您的设计过于消耗资源(我怀疑在这种情况下您会),此时我们将开始寻找作弊以某种方式更瘦。但首先要以正确的方式做,只有在必要时才作弊。