【发布时间】:2011-07-22 10:27:11
【问题描述】:
在 Java 中,在一个大约 1000 行的类中拥有大约 50 个数据字段是一件坏事吗?
编辑:感谢您的反馈。真的让我大开眼界,我将尝试将功能委托给更多类,而不是拥有一个无所不能的类。 :)
【问题讨论】:
-
我们甚至需要一些代码才能开始做出决定。
-
我现在明白了。我想我已经知道我需要做什么了。
在 Java 中,在一个大约 1000 行的类中拥有大约 50 个数据字段是一件坏事吗?
编辑:感谢您的反馈。真的让我大开眼界,我将尝试将功能委托给更多类,而不是拥有一个无所不能的类。 :)
【问题讨论】:
这个问题很模糊。答案可以是肯定的,也可以是否定的。是的,如果您可以将功能清晰地分解为更多类,那将是一件坏事。不,如果课程重点突出,这不是一件坏事,而你获得 50 个字段的唯一原因是因为你需要它们。
例如,我有一个包含 70 个字段的 900 行的类,但那是因为该类实现了一点人工智能,并且 AI 算法使用的参数是很多行为和阈值,需要在那里定义,所以那个孩子班调整他们。就我而言,我会说它不是一个糟糕的架构,我 14 年的软件开发似乎也同意:-)。
当然,如果课程超过 1000 行,我可以将其进一步分解为 2:运动 AI 和攻击 AI,但就目前而言,在我的项目中将它们放在一起确实很有意义,因为运动 AI和攻击AI永远不会独立应用:它们一起工作,它们应该属于同一类。如果我必须制作一个只需要移动 AI 的对象,那么无论如何,我会把它分成 2 个。
【讨论】:
来自代码完成:
对包含超过大约七个数据成员的类持批评态度:数字“7±2”已被发现是人们在执行其他任务时可以记住的一些离散项目(Miller 1956)。如果一个类包含超过大约七个数据成员,请考虑是否应该将该类分解为多个更小的类(Riel 1996)。如果数据成员是整数和字符串等原始数据类型,您可能会更倾向于 7±2 的高端,如果数据成员是复杂对象,则更倾向于 7±2 的低端。
【讨论】:
是的,这是一种代码异味,会使您的代码更难阅读和修改。你的班级将成为God object
Jeff 有一篇很好的文章,我们都应该阅读。
【讨论】:
听起来很糟糕,但谁知道呢。你可能实际上已经找到了一个需要 50 个字段的对象,所有这些字段都是相互关联的,并且需要在一个对象中。
如果不是,为了保持理智,请尽可能将其拆分为更小的部分。
【讨论】:
短篇小说;是的。很长的故事;这是非常主观的。一个有 1000 行的类似乎非常过分。所有这些领域真的相关吗?一个班级应该集中注意力(表现出高凝聚力)。尝试将您的领域拆分为更小、更集中的类。
【讨论】:
我认为不好的是有一个大约 1000 行的类...尝试重构它以使其尽可能小...
【讨论】:
不一定,但这通常意味着你的类应该被分成几个类,因为它正在做很多事情,或者你的类承担了应该在其他类中的职责。这取决于您的应用程序的设计。
【讨论】: