操作系统和数据库考虑
您的代码是否会在新版本的操作系统或者数据库上运行?您是否知道这些新版本中加入了哪些改变以及它们是否(及如何)影响您的代码?
这只是测试
设计是否结合了可测试性?虽然您可能认为可测试性问题不是您需要关心的,但是事实上单元测试 是 开发人员的责任之一 —— 几乎所有使执行功能测试和/或系统测试更容易的任何事情也会使单元测试更容易执行。
下面是 可测试性 领域内容的几个例子(更多内容请参阅 参考资料 部分)。
再多想一想您肯定可以在这个清单中加入更多的内容,特别是那些对您的产品或者组织特定的内容。
防御性编码技术:编译器是您的朋友
当您完成对设计的检查后,就轮到编码了。就让我们面对它,除了设计错误外,编码是惟一引入缺陷的地方。无论如何,您的测试程序和客户是不会加入缺陷的 —— 只有 您 会。我们都知道时间很紧张,但是如果您没有时间在第一次就把它编写正确,那么您怎么能找到时间去修正它呢?花上一些时间,这会使您在以后的编码工作中更轻松。
防止缺陷的最好方法之一是使用编译器。令人恐惧的是,开发人员在编译时通常选择使用最低程度的警告输出,所以请启用编译的全部警告 —— 把即使将编译器配置为检查 所有方面 编译时也不产生一个警告当成编写代码的一个挑战。此外,对代码使用多种编译器使很多程序员获益 —— 这种方法有时会捕获不同的语法错误。
编码习惯
下面我们将抛砖引玉介绍几个好的编码习惯。我们不是要为您定义“最佳编码习惯” —— 我们只是要您形成自己遵守的代码编写习惯。下面是几个供参考的最佳习惯的例子。
在使用前初始化所有变量
您是否有一组可接受的默认值,特别是对于可能被用户、其他组件或者其他程序有选择地修改的数据?同时,我们强烈要求您列出在最外围例程中要使用的所有本地变量,然后再专门初始化它们。这样不会对您编写代码时的想法留下任何疑问。虽然这可能要多花一些时间并且像是没有理由地增加了几行代码,但是与只是在“运行中(on the fly)”声明本地变量相比,大多数优化编译器不会对此生成任何额外的运行时代码。清单 1 显示了在一个例程中最初几行代码的一个例子:
public unsigned short TransMogrify( UFEventLink IncomingLink )
{
//
// local variables
//
unsigned short usRc;
String sOurEventType;
String sTheirEventType;
//
// beginning of code
//
usRc = 0;
sOurEventType = null;
sTheirEventType = null;
//
// a miracle occurs...
//
return( usRc );
} // end "TransMogrify"
|
使用一个“编码标准”文档
如果您有一个编码标准文档,就使用它。您可以在 Internet 上找到许多种编码标准。找到一种简单的、切中要害、并为您留下一定的活动空间的标准。Sun 的网站有一个关于 Java 编程的编码规范的文章(请参阅 参考资料),它给出了拥有标准的下列几点理由:

