快速业务通道

诊断Java代码: 轻松掌握Java泛型 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
JVM 解释的字节码,而 JVM 本身具有良好的规范(尽管通过正式分析在该规范中发现了一些模棱两可的地方)。此外,Java API 都作为 JVM 的一部分规定。这使得 Java 代码具有空前程度的可移植性。

我们从中可以得出结论,一份尽可能精确的语言规范会非常有用。但即使在编程语言世界中,规范中的问题也是最昂贵的,精确的规范很少,部分原因在于预先制作一份精确规范很昂贵。

许多公司发现成本更低的做法是先交付产品,以后(或者很可能永远也不会)再充实规范细节。诚然,对于生命周期较短以及部署范围较窄的应用程序,预先定义精确规范确实是太昂贵了。有时可能竞争对手早已交付了系统,而开发团队还未正式确定其系统的规范。

此外,大型规范很少在用户需求更改时更新,并且因此被忽略了。但是如果预先定义规范太昂贵,开发团队应该采取什么方法来规定他们的软件呢?

在回答这个问题之前,让我们考虑一下一个常用的,但也确实是最糟糕的方法吧。

诊断Java代码: 在规范钢丝上行走(2)

时间:2011-02-11 IBM Eric E. Allen

为什么实现不是规范

与上面的方法相反,许多软件直接实现,而没有可用的规范。如果(或当)软件完成,实现便作为规范提供。

换言之,他们将软件展示的任何行为都说成是规定的行为。

有人可能会争辩说这是一件好事,因为这样防止了开发人员浪费时间去做出某种必定会更改的正式计划。但是,尽管项目规范的确会经常更改,而实现在许多方面会导致一个糟糕的规范。下列是一些原因:

实现包含任意选项。

本质上,每个行为都是有意的,所以不会有错误。

实现中的许多选项是任意的。因而,任何将来在其它平台上实现它们的尝试都只能从现有实现入手。开发人员将不得不花费很大精力,从众多实现细节中确定实现需要的行为。如果在更高级的抽象中规定了这些行为,确定起来就容易得多了。

还有,如果将一个实现完全照搬为它自己的规范,那么就不可能确定该实现的中的任何行为是错误。有多少次我们看到软件公司将其软件中有害的或讨厌的行为标识为“正常”,而只是因为这是由于未开发规范所带来的一个无法预料的结果?

划算的规范

对于初始开发人员,实现无法有效充当规范的第三个显而易见的原因是这样的实现还不存在。这些开发人员必须依赖于他们正在创建的系统的某种行为模型,因此该模型的原始资料将充当软件的规范。

关于开发人员应该使用哪种具有合理成本的规范,这一点给了我们一些启示。但是实际上,为了确定如何实现一个功能部件,一个开发人员必须有一个关于该功能部件是什么的思想模型,而不必拥有关于整个应用程序的思想模型。

换言之,规范可以分段开发。这不仅使它们更容易驾驭,还允许在客户需求更改时更有效地修改它们。

在极端编程(XP)中,系统所需要的功能是在使用 素材的过程中逐步确定的。每个素材简要描述系统行为的一个方面。例如,这里有素材,可将它包含进一个 Java IDE 的规范中:

当用户将文字输入编辑器时,出现的 Java 关键字将自动显示为蓝色。字符串和字符文字显示为绿色,注解显示为红色。

信不信由您,对于 Java 语言,这个素材实际上很难正确实现,部分原因在于块注释的某些特殊特性。根据开发团队的速度,将该素材划分成两个或更多小素材或许是可取的。

但请注意,这个素材很小,而且是用简单、清晰的语言写出的。当需要时,这样很容易拆分,并可以防止规范各部分之间的耦合。

此外,因为素材很小,所以它们可以更新,添加新素材而不必对规范作大的修改。出于这个原因,素材特别适合于那些在实现时经常要更改最终产品需求的业界设置。

不,单元测试也不是规范

在结束关于规范的这一主题之前,我们最好讨论一下最后一个关于单元测试的问题。单元测试对于 XP 非常重

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号