Coding style 一个函数最多应该有多少行?
有没有一种好的编码技术可以指定一个函数应该有多少行?我认为这无关紧要,谁说一旦函数长度超过一定数量的行,它就违反了规则Coding style 一个函数最多应该有多少行?,coding-style,Coding Style,有没有一种好的编码技术可以指定一个函数应该有多少行?我认为这无关紧要,谁说一旦函数长度超过一定数量的行,它就违反了规则 一般来说,只需编写易于使用和重用的干净函数。我认为这并不重要,谁说函数长度一旦超过一定数量的行,就会违反规则呢 一般来说,只需编写易于使用和重用的干净函数。没有。代码行对于任何东西都是一个非常糟糕的指标。例外可能是有成千上万行的函数——你可以很肯定这些函数写得不好 然而,有一些好的编码技术通常会减少每个函数的代码行数。比如DRY(不要重复你自己)和Unix哲学(“编写能做一件事
一般来说,只需编写易于使用和重用的干净函数。我认为这并不重要,谁说函数长度一旦超过一定数量的行,就会违反规则呢
一般来说,只需编写易于使用和重用的干净函数。没有。代码行对于任何东西都是一个非常糟糕的指标。例外可能是有成千上万行的函数——你可以很肯定这些函数写得不好
然而,有一些好的编码技术通常会减少每个函数的代码行数。比如DRY(不要重复你自己)和Unix哲学(“编写能做一件事并且做得很好的程序。编写能协同工作的程序。编写能处理文本流的程序,因为这是一个通用接口。”摘自Wikipedia)。在这种情况下,将“程序”替换为“函数”。没有。对于任何东西来说,代码行都是一个非常糟糕的指标。例外可能是有成千上万行的函数——你可以很肯定这些函数写得不好
然而,有一些好的编码技术通常会减少每个函数的代码行数。比如DRY(不要重复你自己)和Unix哲学(“编写能做一件事并且做得很好的程序。编写能协同工作的程序。编写能处理文本流的程序,因为这是一个通用接口。”摘自Wikipedia)。在这种情况下,将“程序”替换为“函数”。反对函数“过长”的主要理由是将函数细分为较小的函数,这些函数只执行整个作业的一小部分,从而提高了可读性(通过给出这些小部分的实际名称,并帮助读者将注意力集中在较小的行为上,特别是当第1532行可以更改第45行变量的值时) 在函数式编程语言中,这一点是没有意义的:
- 您可以将函数细分为在较大函数体中定义的较小函数,从而不减少原始函数的长度
- 函数应该是纯函数,因此不存在X行更改在Y行读取的值的实际风险:Y行变量的值可以很容易地追溯到定义列表,即使在循环、条件或递归函数中也是如此
因此,我怀疑答案是“没有人真正关心”。反对函数“太长”的主要理由是将函数细分为较小的函数,这些函数只完成整个任务的一小部分,从而提高可读性(通过给出这些小部分的实际名称,并帮助读者将注意力集中在较小的行为上,特别是当第1532行可以更改第45行变量的值时) 在函数式编程语言中,这一点是没有意义的:
- 您可以将函数细分为在较大函数体中定义的较小函数,从而不减少原始函数的长度
- 函数应该是纯函数,因此不存在X行更改在Y行读取的值的实际风险:Y行变量的值可以很容易地追溯到定义列表,即使在循环、条件或递归函数中也是如此
函数的大小不太相关,尽管FP中的大多数函数往往较小、精确且切中要害。有一个圈复杂度的McCabe度量,您可以在这里阅读 该指标衡量一个例程中存在多少测试和循环。经验法则可能是,10以下的复杂度是可以管理的,而11以上的复杂度则更容易出错 我见过复杂度超过50的可怕代码(容易出错,难以理解或更改)。重新编写代码并将其分解为子例程将复杂度降低到8
请注意,复杂性度量通常与代码行成比例。它将为您提供复杂性度量,而不是代码行。有一个圈复杂度的McCabe度量,您可以在这里阅读 该指标衡量一个例程中存在多少测试和循环。经验法则可能是,10以下的复杂度是可以管理的,而11以上的复杂度则更容易出错 我见过复杂度超过50的可怕代码(容易出错,难以理解或更改)。重新编写代码并将其分解为子例程将复杂度降低到8