软件培训网

欢迎访问软件培训网!招生咨询电话与微信:15225191462(周老师)
软件培训网,专业解决学IT疑难杂症!

首页 > 软件测试/ 正文

对话马丁·福勒(Martin Fowler)——第五部分:测试驱动开发

2012-11-18 22:49:16

  第一部分:重构
  第二部分:设计原则与代码所有权
  第三部分:进化型设计
  第四部分:灵活性与复杂性
  第五部分:测试驱动开发
  第六部分:性能与过程调优my1软件IT培训网-河南郑州IT培训

  逐步设计my1软件IT培训网-河南郑州IT培训

  比尔:在进化型设计中,接口的设计是否是逐步完成的,每次只设计一小块?my1软件IT培训网-河南郑州IT培训

  马丁:没错。比如说,当我构造一个 Money 类时,在没实现“加法”功能之前,对于“乘法”功能我连考虑都不会考虑。只专注在“加法”功能上,不要想其它的事情。定义“加法”的接口,实现它的代码。然后再做下一步。my1软件IT培训网-河南郑州IT培训

  比尔:我还是更习惯于这样的方式:好,让我们来看看 Money 这个类,它应该有哪些职责?需要提供哪些服务?先定义接口而不要管代码,把这些接口都定义清楚、一目了然,然后是写代码,接下来测试、实现,测试、实 现…… 我仍然倾向于把整个系统分为子系统,然后再分为子系统的子系统,然后把需要用到的接口也归堆儿设计,就像类一样。my1软件IT培训网-河南郑州IT培训

  马丁:我之所以采用逐步设计以及先写测试的方法,是因为这样做使我有了一个简明扼要的任务列表。在每个阶段的结尾,我都有一些已经做完的事情。于是我对自己说,好吧,这些东西是完成了的,把它们添加到已有的代码中吧。它们做了它们应该做的,而且是以正确的方式。my1软件IT培训网-河南郑州IT培训

  从容不迫的感觉my1软件IT培训网-河南郑州IT培训

  马丁:测试优先设计会使你体会到一种难以言传的从容不迫之感。你的进展其实非常快,但却不会让你感 到很紧张,因为你为自己设定的都是一些微目标(micro-goals)。在每个时间点上,你知道自己是在实现某一个微目标。一旦测试通过,该目标就实现 了。这是一种很平和的过程。它缩小了你的关注范围。你不需要去考虑每一件事情,只需要专注于某一小块功能。你实现了这个功能,然后重构它,使得其中每个环 节的设计都近于完美。然后再进行下一步。我以前用的是你所描述的方法,我不得不常常问自己,“这个东西的接口是什么?”而现在,我转向了增量式设计 (incremental design),并且觉得这种方式要大大由于之前的方法。my1软件IT培训网-河南郑州IT培训

  比尔:好吧,我也会试试这种方式。my1软件IT培训网-河南郑州IT培训

  马丁:你只需要花少许时间来尝试一下。最好是跟以前这样做过的人在一起。只管做好了。my1软件IT培训网-河南郑州IT培训

  我在写《企业应用架构模式》(Patterns of Enterprise Applications Architecture Design)这本书的时候,曾碰到过这样一个增量式设计的例子。当时,我需要构建一个关联表映射(associative table mappings)的模式实例。假如在内存中你有一个多对多的关系,并且需要把它持久化到一个关系型数据库中。这时,你需要一个额外的连接表。因此一共有 三张表。有很多种方法可以将数据从数据库中读入到内存里:有一种比较简单的办法,但是需要执行多个 select 语句;也有一种比较快的方法,可以只用一个 select 语句,但是当需要把返回的数据提取出来并拆分到不同的对象中时,就会很别扭。my1软件IT培训网-河南郑州IT培训

  我用增量式设计构建了这个模式实例。起先,我针对三张具体的表和两个具体的类编写了一段写死的代码,根本就没有考虑通用化的问题。我只是 让这个非常特定、具体的例子能够运行起来。在通过测试之后,我着手重构这个例子以使它的应用范围更广一些。花了一点时间之后,我就得到了一个通用的机制。 我所要做的一切,就是写一个很小的映射类,就能够让这个例子对任意的表和类都适用。my1软件IT培训网-河南郑州IT培训

  我发现,从具体的实例入手然后再把它重构成一个抽象的例子是非常容易的;反之,如果从抽象的例子入手而把它应用到具体的案例中,则要困难 得多。我还发现,前者会给人一种更平静和从容的感觉,而实际的进展又非常之快。我能够始终清楚目前我在哪里,又在做什么。我对进度的把握也更加得心应手, 再也不会有那种“何时才能让这段代码运转起来”的无力感。my1软件IT培训网-河南郑州IT培训


Tags:.NET开发技术系列议题,河南软件测试学校哪家比较靠谱,郑州北大青鸟学士后java培训怎么样,郑州北大青鸟,软件测试从零开始,河南北大青鸟电脑培训学校在哪里呢

搜索
软件培训学校哪家好,就来软件培训网咨询
软件培训学校哪家好,就来软件培训网咨询
热门标签
软件培训学校哪家好,就来软件培训网咨询
软件培训学校哪家好,就来软件培训网咨询
软件培训学校哪家好,就来软件培训网咨询
  • QQ交谈