《代码大全》用数据说话:关于子程序的最佳长度
来源:互联网 发布:锻造模拟软件 编辑:程序博客网 时间:2024/05/16 10:21
不少讨论编程风格的书都告诉我们,应该编写短小的函数(子程序),各家推荐的子程序最佳长度也不一样,从十多行到一二百行不等。《代码大全 第二版》的特点之一是“用数据说话”,书中列出:
■ 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行后,你迟早会在可读性方面遇到问题。”
《代码大全》的最大特点之一,是“归纳总结来自专家经验、业界研究以及学术成果”并强调编程实践。这本书有数据,有分析,有指导建议;言之有据,论之有理。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=572362
- 《代码大全》用数据说话:关于子程序的最佳长度
- 《代码大全》用数据说话:关于子程序的最佳长度
- 《代码大全》用数据说话:关于子程序的最佳长度
- 《代码大全》用数据说话:关于子程序的最佳长度
- 《代码大全》用数据说话:关于子程序的最佳长度
- 《代码大全》用数据说话:关于子程序的最佳长度
- 《代码大全》用数据说话:关于子程序的最佳长度
- 《代码大全》用数据说话:关于子程序的最佳长度
- 《代码大全》用数据说话:关于子程序的最佳长度
- 《代码大全》用数据说话:关于子程序的最佳长度
- 《代码大全》用数据说话:关于子程序的最佳长度
- 《代码大全》用数据说话:关于子程序的最佳长度
- 《代码大全》用数据说话:关于子程序的最佳长度
- 《代码大全》用数据说话:关于子程序的最佳长度
- 代码大全-创建子程序的理由总结
- 代码大全--子程序 读书笔记
- 《代码大全》 子程序质量检查表
- 《代码大全》 第四章-五张读书笔记 建立子程序的步骤,高质量子程序的特点
- 小试一把 64 位 Windows 编程
- 关于在FPGA上实现AES算法的笔记
- 《代码大全》:review与inspection
- 中国的LAMP在成长
- 关于在FPGA上实现AES算法的笔记
- 《代码大全》用数据说话:关于子程序的最佳长度
- 编程十心,练就一级武林高手。
- Verilog与C++的类比
- 在XSL里应用javascript/C# Script等
- 去掉 deplate(Viki) 生成的 html 文件行尾多余的空格。
- CC2e 术语:把 routine 译为“子程序”的理由
- 《代码大全》用数据说话:关于子程序的最佳长度
- 利用Bresenham算法控制多部步进电机匀速转动
- 利用Bresenham算法控制多部步进电机匀速转动