当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:14:00  来源:本站整理

追求代码质量 - 谨防精密耦合![Java编程]

赞助商链接



  本文“追求代码质量 - 谨防精密耦合![Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

在过去一年的时间中,我在“ 追求代码质量 ” 专栏撰写了大量的文章.这 些文章向大家介绍了很多可以改良代码质量的工具和本领.我已经向大家展示了 若何利用代码器量来监控代码库的质量;若何利用 TestNG、FIT 和 Selenium 之类的测试框架来查验利用程序的功效;以及若何利用 XMLUnit 和 StrutsTestCase 之类的扩大框架(和一些功效强盛的帮忙工具,如 Cargo 和 DbUnit)来扩大测试框架的利用范围.

固然代码器量和开辟人员测试关于在整个开辟历程中确保代码质量非常重要 (就像我常常所说的,要及时并常常举行测试),但是它们基本上只能对代码质 量做出反映.您通过测试和器量代码来肯定和量化代码的质量,但是代码本身都 已经写好了.不管您做出多么勤奋,城市受困于最初的计划.

当然,差别的办法所计划出来的软件系统会有好有坏,良莠不齐.优异计划 的关键因素之一就是注意保持系统的可保护性.粗劣计划的并可履行的系统大概 易于编写,但是要对它们供应支持确切是一个挑衅.这些系统常常脆弱不堪,也 就是说对系统中某个区域的改正将会影响到别的看上去毫不相关的区域,因此要 对它们举行重构也相当的艰难和耗时.向代码库中增添开辟人员测试可认为我们 供应工作的筹划,但是其进展本身仍旧是一个艰苦和迟钝的历程.

我们可以通太重构来改良已经编写好的代码,但是普通来说在代码已完成之 后再举行窜改耗费宏大.而假如在一开始就把代码编写得 尽善尽美 会不会越发 便利和轻松呢? 这个月,我将介绍一种非常主动的本领,可以确保软件系统的 质量和可保护性.依靠性倒置原则 被证明是编写可保护和可测试的高质量代码 的必要条件.依靠性倒置原则的基本思惟就是对象应当依靠于抽象 而不是实现 .

是依靠性倒置 而不是依靠性注入

依靠性倒置原则与依靠性注入并没有直 接的关系.依靠性注入,也被称作掌握反转(inversion of control,IOC),即 利用 Spring 之类的框架在运行的时刻(而不是在编译的时刻)链接对象的依靠 关系.固然依靠性倒置和依靠性注入并不需求同时利用,但是它们是互补的:两 个本领都力争操纵抽象而不是实现.

过于精密的耦合

您大概至少据说过面向对象编程中所利用的术语耦合(coupling).耦合即 利用程序中各组件(或各对象)间的彼此关系.疏松耦合的利用程序要比精密耦 合的利用程序更具模块化.疏松耦合利用程序中的组件依靠于各种接口和抽象类 ,而精密耦合的系统则与之相反,其组件依靠于各种具体的类.在疏松耦合的系 统中,其组件是利用抽象而不是 实现来彼此关连的.

假若有图解的话,可以很轻松地理解精密耦合的问题.举例阐明,图 1 中的 软件系统的 GUI 与它的数据库相耦合:

图 1. 一个精密耦合的系统

GUI 对某个实现(而不是抽象)的依靠会对系统造成限制.在数据库未启动 和运行的情形下 GUI 是无法履行的.从功效的角度上看这种计划仿佛并非很 糟糕 —— 毕竟,我们一向都是这样编写利用程序并且也没有出什么问题 —— 但是测试就要另当别论了.

‘脆弱’ 的系统

图 1 中的系统使得断绝编程分外地艰难,而这对测试和保护系统各个方面又 非常必要.您将需求一个具有精确查找数据的活动数据库来测试 GUI,和一个运 行正常的 GUI 来测试数据拜候逻辑.您可以利用 TestNG-Abbot(目前的名称为 FEST)来测试前端,但是这样仍旧无法奉告您任何有关数据库功效的内容.

清单 1 展示了这种糟糕的耦合.GUI 的一个特定的按钮定义了一个 ActionListener,它通过 getOrderStatus 调用直接与底层数据库通信.

清单 1. 把 ActionListener 定义为 GUI 中的一个按钮

findWidgetButton.addActionListener(new ActionListener()  {
  public void actionPerformed(ActionEvent e) {
  try {
   String value = widgetValue.getText();
    if (value == null || value.equals("")) {
     dLabel.setText("Please enter a valid widgetID");
    } else {
     dLabel.setText(getOrderStatus(value));
    }
  } catch (Exception ex) {
   dLabel.setText("Widget doesn't exist in system");
  }
}
//more code
});


  以上是“追求代码质量 - 谨防精密耦合![Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 追求代码质量 - 操纵TestNG-Abbot实现自动化GUI测试
  • 追求代码质量 - 可反复的系统测试
  • 追求代码质量 - 顺服复杂的冗长代码
  • <b>追求代码质量 - 测试Struts遗留的操纵程序</b>
  • 追求代码质量 - 谨防精密耦合!
  • 追求代码质量 - 亲身体验行为驱动开辟
  • 追求代码质量 - 通过测试分类实现矫捷构建
  • 追求代码质量 - JUnit 4与TestNG的对比
  • 追求代码质量 - 用代码器量举行重构
  • 追求代码质量 - 操纵Selenium和TestNG举行编程式测试
  • 追求代码质量 - 用JUnitPerf举行性能测试
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .