background image

这些框架可以简化接口开发的任务。
  随着开放源码的框架(  

如 Apache Struts)

 

的出现 [Brown],我们相信,可以自动地

和快速地转换到这些新的框架。我们认为,使用开放源码社区支持的框架非常适合于开发
人员,并且这些框架很快得到了广泛认可,不仅可用于新的开发,还可以修改现有的应
用程序。
  但令人感到奇怪的是,事实并非如此。我们仍可以看到许多公司在维护或甚至开发新

 

的用户接口框架,而这些框架的功能与 Struts 

 

或者 JSF 是完全相同的。之所以会出现这

种情况,有许多原因:机构惰性, 非我发明 症,不了解更改现有代码的好处、或者甚至
傲慢地认为能够比开放源码开发人员的特定框架做得更好。
  然而,这些原因都已经过时了,不能够成为不采用标准框架的借口。 Struts   

和 JSF 

 

不仅在 Java 

 

社区中得到了广泛认可,而且还受到 WebSphere 

 

运行时和 Rational® 工

具套件的全面支持。同样地,在富客户端领域中,Eclipse RCP(富客户端平台,Rich 
Client Platform)

 

获得了广泛的认可,可用于构建独立的富客户端。尽管不是 Java EE 标

 

准中的一部分,但这些框架现在已成为 Java EE 社区的一部分,并且理应如此。

 

  对于那些因为傲慢而不愿使用现成的 UI 

 

框架的人,应该阅读 [Alur]   

和 [Fowler] 中

 

介绍的内容。这两本书详细地描述了企业 Java 应用程序中最常用的可重用模式。从类似

 

于会话 Facade 这样简单的模式(将在后面的建议中讨论)

 

到类似于 Fowler 持久性模式

(许多开放源码的持久性框架对其进行了实现)这样比较复杂的模式,其中的内容体现了 
Java 前辈们所积累的智慧。那些不能吸取教训的人必定会重蹈覆辙(如果他们非常幸运,
能够在第一次失败之后获得重来一次的机会)

 

,他们不得不向哲学家 Santayana 说抱歉。

  3. 在应用程序的每一层都使用自动单元测试和测试管理。
  不要只是测试您的图形用户界面(GUI)。分层的测试使得调试和维护工作变得极其简
单。

 

  在过去的几年中,在方法学领域有了相当大的革新,例如新出现的被称为 Agile 的
轻量级方法现在已经得到了很普遍的应用。几乎所有的这些方法中的一个共同特征是它们
都提倡使用自动的测试工具,这些工具可以帮助开发人员用更少的时间进行回归测试,
并可以帮助他们避免由于不充分的回归测试造成的错误,因此可以用来提高程序员的工

 

作效率。实际上,还有一种被称为 Test-First Development [Beck2] 的方法,这种方法
甚至提倡在开发实际的代码之前就先编写单元测试。然而,在您测试代码之前,您需要将

代码分割成一些可测试的片断。一个 大泥球 是难以测试的,因为它不是只实现一个简单
的易于识别的功能。如果您的每个代码片断实现多个方面的功能,将难以测试其中的每个
部分以保证其正确性。
  MVC 体系结构(

 

以及 Java EE 

 

中的 MVC 实现)的一个优点就是元素的组件化能够

(实际上,相当的简单)

 

对您的应用程序进行单元测试。因此,您可以方便地对实体 Bean、

 

会话 Bean 

 

以及 JSP 

 

独立编写测试用例,而不必考虑其他代码。现在有许多用于 Java 

EE 测试的框架和工具,这些框架及工具使得这一过程更加简单。例如,JUnit(是一种由 
junit.org 开发的开放源代码工具)  

和 Cactus(  

由 Apache 协会开发的开放源代码工具)对

 

于测试 Java EE 组件都非常有用。[Hightower] 

 

详细探讨了如何在 Java EE 中使用这些

工具。
  尽管所有这些详述了怎样彻底地测试您的应用程序,但是我们仍然看到一些人认为

 

只要他们测试了 GUI(

 

可能是基于 Web   

的 GUI

 

,或者是独立的 Java 应用程序),则他们

 

就全面地测试了整个应用程序。仅进行 GUI 测试是不够的。GUI 测试很难达到全面的测试,