Language agnostic 类中允许的最大方法数的限制是多少?

Language agnostic 类中允许的最大方法数的限制是多少?,language-agnostic,oop,class-design,Language Agnostic,Oop,Class Design,在填写(为一些学术研究人员提供有关软件设计的真实数据)时,我遇到了这个问题: 类中允许的最大方法数的限制是多少 然后调查继续询问,一旦达到这个极限,是否重构类 老实说,我在设计应用程序时从未考虑过这样的限制,我想知道这背后的原因是什么。为什么我要给自己强加一个任意的数字,这可能非常依赖于类的功能?您不必限制N的最大值。但你必须遵循“高凝聚力”原则。不要创建所有可以做任何事情的类 我想你应该开始担心了。但这实际上取决于课程本身及其主要目标。有一个神奇的数字可以作为我们制定规则的基础,这种想法是那些

在填写(为一些学术研究人员提供有关软件设计的真实数据)时,我遇到了这个问题:

类中允许的最大方法数的限制是多少

然后调查继续询问,一旦达到这个极限,是否重构类


老实说,我在设计应用程序时从未考虑过这样的限制,我想知道这背后的原因是什么。为什么我要给自己强加一个任意的数字,这可能非常依赖于类的功能?

您不必限制N的最大值。但你必须遵循“高凝聚力”原则。不要创建所有可以做任何事情的类


我想你应该开始担心了。但这实际上取决于课程本身及其主要目标。

有一个神奇的数字可以作为我们制定规则的基础,这种想法是那些渴望将秩序强加给宇宙的人通常会表现出的一种怯懦


这就是说,如果一个类中有20多个左右的方法,那么很可能它做得太多,并且违反了规则。

我也不会对事情进行任意限制,但我要说的是,一旦一个类有超过10-20个公共方法范围的某个地方,我会认真看看这个类在做什么。在我的J2EE时代,我们称之为企业Java瓜


同样的规则适用于单个方法的长度。我见过只有一个或两个方法的类,但每个方法都有数百行代码。

就像其他人指出的那样,通常不会有任意数量的方法,在这一点上,我会说“方法太多了!”有时相反的情况也同样糟糕,例如,当一个对象有一个跨越数百行的“万事俱备”方法时


这就是说,如果我打开一个我以前没有看过的源文件,看到超过10-20个方法,我可能会扫描它,看看它是否可以以某种方式重新分解

自从我开始将课程分解为一项责任以来,我通常不会去一个有问题的地方

此外,一个设计良好的类可能有30个方法,而一个设计糟糕的类可能有3个(嗯,30个方法在推动它,但问题是——这甚至不一定是一个好的度量,有点像计算kloc)

您的框架/语言可能需要很多没有业务逻辑的方法

计算包含业务逻辑的非平凡方法的数量可能很有趣——我认为大约4或5个方法是合适的


当我查看源代码时,我很惊讶JDK类中实际包含了多少方法,但它们都很好地打破了,很小,很容易阅读,所以有20个根本不是问题。

当“新答案”对话框出现时,我正在写同样的东西+1+1,小的、集中的类是好的,但对方法的数量或大小的任意限制最终都是没有用的。我原则上同意这一点,但20太低了。