开发人员编写代码.不幸的是,开发人员也编写缺陷,其中大多数缺陷是在最初的编码阶段加入的.修复这些缺陷成本最低的地方同样也是在开发的初始阶段.如果等到功能测试或者系统测试来捕获并修复缺陷,那么您的软件开发成本就会高得多.在本文中,作者 scott will.ted rivera 与 adam tate 讨论了一些基本的“防御性”编码与单元测试实践,让开发人员更容易找到缺陷 —— 更重要的是,从一开始预防缺陷产生.
大多数司机接受过防御性驾驶技术的教育 —— 这有很好的理由 —— 但是并不是所有开发人员都接受过防御性开发的教育,特别是那些没有用汇编语言进行过多少开发(如果不是完全没用过的话).也没有因内存约束与处理器限制而关心过编写极其紧凑的代码的年轻开发人员.本文讨论防御性编码与单元测试概念,它们可以帮助开发人员更快生成更好的代码并且缺陷更少. 【程序编程相关:C++基本类型对象化的一个方案】
防御性驾驶与防御性开发 【推荐阅读:无障碍网页开发:规范和技术手册】捕捉错误.问题与缺陷的最佳位置是在开发周期的早期.图 1 展示了最容易出现缺陷的地方,以及最容易发现它们的地方,并包括了修复这些缺陷的成本(这些成本是针对 1996 年的 —— 今天的成本显然更高). 【扩展信息:基于Java的开源论坛JForum的安装】为什么防御性开发是重要的? 图 1. 缺陷:引入阶段及发现阶段(包括成本) 当然,比在编码阶段找到缺陷更好的是在一开始就防止它们.防止缺陷应该是开发人员最优先考虑的.我们将分析几个让开发人员可以在编码与单元测试时防止并检测缺陷的简单的.经过证明的方法. 在编译前(防御性设计考虑) 防止缺陷(特别是系统性缺陷)的最有效方式是仔细检查编码所依据的设计.由设计缺陷导致的缺陷 —— 虽然一般不是很多 —— 通常修补成本是最高的.事前花很少的时间针对以下几点对设计进行检查可以得到显著的长期回报. 设计考虑 设计是否有任何不清楚或者混乱的部分?如果是的话,在编写任何代码 之前 澄清这些问题.否则,您可能以一种方式解释一个设计需求,而同事则以另一种方式解释它,从而得到不兼容的实现. 如果您的代码要访问同时被其他组件访问的数据,那么保证您的设计可以处理这种情况.同时,检查设计的安全问题. 如果您的代码严重依赖于其他应用程序的代码,那么您对那个应用程序是否熟悉到可以对设计进行检查?考虑在您的设计检查小组中加入熟悉该产品的一个开发人员.在 设计阶段 发现的集成问题可以得到最有效的处理.... 下一页