仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 545|回复: 8
打印 上一主题 下一主题

[学习教程] 发布一篇演变架构与告急计划: 测试驱动计划,第2部分

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:10:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。
本文是分两部分的文章的第二部分,会商怎样利用TDD在编写代码之前编写测试,并经由过程这个历程构成更好的计划。在第1部分中,我接纳后测试开辟方法(在编写代码以后编写测试)编写了完整数查找程序的一个版本。然后,利用TDD(在编写代码之前编写测试,如许就能够用测试驱动代码的计划)编写了另外一个版本。在第1部分的开端,我发明我在用来保留完整数列表的数据布局范例方面犯了一个基本性毛病:我最后依据直觉选用了ArrayList,可是厥后发明Set更符合。我将以这个成绩为出发点,会商怎样改善测试的质量和反省终极代码的质量。
测试质量
利用更好的Set笼统的测试见清单1:
清单1.利用更好的Set笼统的单位测试
_@Test public void add_factors() {
  Set<Integer> expected =
      new HashSet<Integer>(Arrays.asList(1, 2, 3, 6));
  Classifier4 c = new Classifier4(6);
  c.addFactor(2);
  c.addFactor(3);
  assertThat(c.getFactors(), is(expected));
}
这段代码测试我的成绩范畴中最关头的部分之一:猎取数字的因子。我但愿彻底地测试这个步骤,由于它是成绩中最庞大的部分,以是也是最简单呈现毛病的。可是,它包括一个粗笨的机关:newHashSet(Arrays.asList(1,2,3,6));。即便有了古代IDE撑持,这行代码编写起来也很别扭:输出new,输出Has,执行代码探察;输出<Int,再次实行代码探察,真是太贫苦了。我要让它简单些。
湿润的测试
AndyHunt和DaveThomas所著的ThePragmaticProgrammer提出了很多良好的编程理论,个中之一是DRY(DontRepeatYourself,不要反复本人)准绳。这条准绳主意从代码中打消一切反复,由于反复经常会招致毛病。可是,DRY不合用于单位测试。单位测试经常必要测试有渺小差别的代码举动,因而触及到类似和反复的情形。比方,为了在分歧的测试中测试各类情形,经常必要复制粘贴代码,以得出清单1中预期的了局(newHashSet(Arrays.asList(1,2,3,6)))。
关于TDD,我的履历划定规矩是测试应当是湿润的,可是不要湿透。也就是说,测试中能够有一些反复(并且这是不成制止的),可是不该该创立愚笨的反复布局。因而,我要重构测试,供应一个private帮助办法,用它处置这个经常使用的创立语句,见清单2:
清单2.坚持测试得当湿润的帮助办法
private Set<Integer> expectationSetWith(Integer... numbers) {
  return new HashSet<Integer>(Arrays.asList(numbers));
}
<p>
你通过从书的数量和开发周期及运行速度来证明:net和ruby要比java简单。
活着的死人 该用户已被删除
沙发
发表于 2015-1-20 15:53:18 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
乐观 该用户已被删除
板凳
发表于 2015-1-27 15:30:25 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
再现理想 该用户已被删除
地板
发表于 2015-2-1 19:14:43 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
第二个灵魂 该用户已被删除
5#
发表于 2015-2-7 13:50:00 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
谁可相欹 该用户已被删除
6#
发表于 2015-2-22 02:56:38 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
透明 该用户已被删除
7#
发表于 2015-3-6 22:41:24 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
再见西城 该用户已被删除
8#
发表于 2015-3-13 22:08:49 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
金色的骷髅 该用户已被删除
9#
发表于 2015-3-20 20:23:26 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-14 22:32

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表