关于子程式的最好长

2008-02-23 05:29:14来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

标题:关于子程式的最好长度
摘自:《代码大全》

  不少讨论编程风格的书都告诉我们,应该编写短小的函数(子程式),各家推荐的子程式最好长度也不相同,从十多行到一二百行不等。《代码大全 第二版》的特点之一是“用数据说话”,书中列出:

■ Basili和Perricone所做的一项研究发现,子程式的长度和错误量成反比,即:随着子程式长度的增加(上至200行代码),每行代码所包含的错误数量就会减少(Basili和Perricone 1984)。

■ 另一项研究则发现,子程式的长度和错误量没有关联,而结构复杂度连同数据量却和错误量有关(Shen et al. 1985)。

■ 1986年所做的一项研究发现,短小的子程式(含有32行或更少代码)和更低的成本或错误率无关(Card,Church and Agresti 1986;Card and Glass 1990)。有证据表明,较长的子程式(含有65行或更多代码)使得每行代码的成本更低。

■ 一项对450个子程式所做的实证研究发现,相对较长的子程式而言,短小的子程式(包括注释在内少于143行语句)中每行代码所含的错误数量要多23%,而修改成本却低2.4倍(Selby and Basili 1991)。

■ 另一项研究发现,平均长度为100到150行代码的子程式需要被修改的几率最低(Lind and Vairavan 1989)。

■ IBM所做的一项研究发现,最容易出错的是那些超过500行代码的子程式。超过500行之后,子程式的出错率就会和其长度成正比(Jones 1986a)。

  对此,作者作了一番分析,认为子程式并不是越短越好:“那么,上述这些研究对于面向对象程式中子程式的长度又意味着什么呢?在面向对象的程式中,一大部分子程式都是访问器子程式(accessor routines),他们都很短小。在任何时候,复杂的算法总会导致更长的子程式。在这种情况下,能够允许子程式的长度有序地增长到100至200行(不算源代码中的注释行和空行)。数十年的证据表明,这么长的子程式也和短小的子程式相同不易出错。和其对子程式的长度强加限制,还不如让下面这些因素——如子程式的内聚性、嵌套的层次、变量的数量、决策点(decision points)的数量、解释子程式用意所需的注释数量连同其他一些跟复杂度相关的考虑事项等——来决定子程度的长度。”

  然后得出结论:“这就是说,假如您要编写一段超过200行代码的子程式,那您就要小心了。对于超过200行代码的子程式来说,没有哪项研究发现他能降低成本和/或降低出错率,而且在超过200行后,您迟早会在可读性方面碰到问题。”

  《代码大全》的最大特点之一,是“归纳总结来自专家经验、业界研究连同学术成果”并强调编程实践。这本书有数据,有分析,有指导建议;言之有据,论之有理。




标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: C 语言风格流变史

下一篇: 学习C 的最大难度

热门词条
热门标签