WEB开发网
开发学院WEB开发Jsp 敏捷开发的必要技巧:处理不合适的依赖 阅读

敏捷开发的必要技巧:处理不合适的依赖

 2008-01-05 08:28:57 来源:WEB开发网   
核心提示: 摘要: 要判定一个代码是不是包含了“不合适的依靠”,共有四个方法:1.看代码:有没有互相依靠?2.认真想想:它真正需要的是什么?3

   摘要:

   要判定一个代码是不是包含了“不合适的依靠”,共有四个方法:1.看代码:有没有互相依靠?2.认真想想:它真正需要的是什么?3.推测一下:它在以后的系统中可以重用吗?4.到要重用的时候就知道了:现在我要重用这个类,能不能重用?

假如现在有一个类Parent,里面有个属性的类型是Child,add的方法里面还有个参数的类型是Girl:

  class Parent{
    Child child;
    void add(Girl girl){
      ...
    }
   }



   因为上面Parent里面用到了Child跟Girl这两个类,我们就说,Parent引用了类Child跟类Girl。现在的问题是,假如Child这个类或者Girl这个类编译不过的话,那么Parent这个类也编译不了了。也就是说,Parent依靠于Child跟Girl。这章讲述的,就是因为一些类的依靠造成的无法重用的问题。

示例

  这是一个处理Zip的程序。用户可以在主窗口中先输入要生成的目标zip的路径,比如c:\f.zip ,然后输入他想压缩到这个zip的源文件的路径,比如
c:\f2.doc和c:\f2.doc 。然后这个程序就会开始压缩f1.doc和f2.doc,生成f.zip文件。在压缩各个源文件的时候,主窗口下的状态栏都要显示相关的信息。比如,在压缩c:\f2.doc的时候,状态栏就显示"正在压缩 c:\f2.zip"。                                       

目前的代码就是                                      

  class ZipMainFrame extends Frame {
    StatusBar sb;
    void makeZip() {
      String zipFilePath;
      String srcFilePaths[];
      //根据UI上给zipFilePath和srcFilePaths赋值
      ...
      ZipEngine ze = new ZipEngine();
      ze.makeZip(zipFilePath, srcFilePaths, this);
    }
    void setStatusBarText(String statusText) {
      sb.setText(statusText);
    }
  } 
  
  class ZipEngine {
    void makeZip(String zipFilePath, String srcFilePaths[], ZipMainFrame f) {
      //在该路径上创建zip文件 
      ... 
      for (int i = 0; i < srcFilePaths.length; i++) { 
        //将srcFilePaths[i]的文件加到压缩包中
        ... 
        f.setStatusBarText("Zipping "+srcFilePaths[i]); 
      }
    }
  }


Tags:敏捷 开发 必要

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接