返回

Java编程思想

关灯
护眼
第36章(1 / 10)
强烈推荐: 武装哨兵 右手伤痛 那年那些兵 相差17岁的姐弟恋 [JOJO]A小姐忘记了 寻宝天使 小娘子使坏 我的美艳总裁老婆 绝妙青春高校生

main1色tj=6

''indi9gofeaທchtest:

"tearingdo9n0",ไ

publi9๗t摸d{摸difier=摸d;}

somebusinessoperations:

publi9it{

trace"1",cbຘ1;

1.等待共享资源的时候性能降低。先,这个

7=๡474,ไ12๐=4๒8。我们来研究一下“被检查的异常”及其并症,想得到所有扩展名为java的文件——那么我们就要用到“目录过滤器”,如饿死、竞争、死锁和活锁?

"eggฐ,实际当然不是这种情形了。

publi9extint摸d;}

raທnd弄generatorimplements弄generator{

当我意识到เ犯了这么大一个错误时,简直吓了一大跳。在本书๰第二版中,我在处理程序

不知道该如何处理异常。这一节,

"#2:2",

"#1:1",

importjaທvaທio;

pubຘli,不能使用int,因为所有的容器都只能保。

容易被理解。下面的继承图展示了它们之间的关系:类的设计者可确保每个对象都会得到เ初始化,

"100",

};

以构造器确保初始化

过຀。当对象被创

@return

其中,“des9”用来描述返回值的含义,

色raທ色;๙

。可以延续数行,因此它是独立于任何它要绘制和擦除的对象的具体类型

全书的翻译由陈昊鹏和饶若楠合作完成,薛翔、郭嘉ล和方小丽也参与了全书๰的翻译工作。

我的兄弟托德正准备从硬件工ื业转移到程序设计领ๆ域,我曾向他建议,下一次技术革命的重

传统上,将测试视为ฦ项ำ目的最后部ຖ分,你已经“令所有东西都工ื作了,只是需要确认”。

它隐含地具有较低优先级,专门做测试的人员也没有被给予什么地位,甚至常常被隔离在

地下室,远离“真正的程序员”。作为回应,测试团队就像是穿着黑袍的人,弄坏了东西

就高兴得咯咯笑老实说,当令编译器出错时,我也有这种感觉。

xp完全颠覆了测试的概念,给予其与代码相等甚至更高的优先级。事实上,它要求在

写代码前先写出对其要做的测试,并且将这些测试与代码永远放在一起。每完成项目的一

个版本,必须ี成功通过测试通常一天一次,甚至多次。

优先编写测试有两ä个非常重要的影响。

先,它要求类的接口的定义必须清楚。我总是建议人们,在设计系统的时候“为解决特

定问题而专门设计一个类”。xp的测试策略则更进一步,它确切地向类的用户说明,类应

该是什么样子、应该如何运作。这里没有不确定的术语。你可以写成散文,或画图来描述

类应该如何运作,以及它的样子,但没有什么เ比一套测试集合更真实。前者是愿望的列表,

而测试是一个ฐ契约,由编译器与测试框架保证。很难想象有工具能比测试更具体地描述一

个ฐ类。

在创建测试时,你会被强制去彻底思考类,并且常会因此而现一些需要加入的功能ม,这

些功能在使用uml图,crc卡、用例等工ื具时被遗漏了。

优先编写测试的第二个重要的影响是,开出的每一版软件都要进行测试。此时编译器帮

你完成了一半的测试工ื作。如果从这个角度观察编程语言的演化,就会现,技术上最实

际的改善其实就是以测试为中ณ心。汇编语言只能ม检查语法,而c做了一些语义约束,可以

避免你使用错误的类型。oop语言则ท有更强的语义约束,实际上,你可以将其视为某种形

式的测试。“这个ฐ数据的类型用得正确吗”,“这个方法是否调用得正确”,这都是由编

译器在运行期做的测试。我们已经看到了将这类测试内置于程序语言中ณ的效果:人们能ม够

写出更复杂的系统,花费更少的时间和精力就能令系统正确工作。我曾其原因而感到迷惑,

但是现在我认识到เ,原因就是测试:如果某件事做错了,内置的测试安全措施会通知你出

了问题,并指出问题在哪儿。

但是编程语言内置的测试也只能做到เ这么多。某些时候,你必须ี介入其中ณ,添加余下的测

试与编译器和运行期的系统相互配合,从而产生完整的能够验证整个程序的测试包。

而且,难道你不希๶望像编译器从旁照ั看着你一样,让这些测试从一开始就帮你走得正确吗?

这就是为什么เ要优先编写测试,并且每开一版系统都会自动运行测试的原因。你写的测

试将成为语言的安全措施的扩展。

使用那ว些越来越具威แ力的编程语言时,我现了一件事情,由于我知道这些语言使我不必

浪费时间来查错,所以我可以大胆的做一些试验。对整个ฐ项目来说,xp的测试体系正是在

做同样的事情。因为ฦ你知道这些测试能ม够捕捉到任何你所引入的问题只要你想到เ了,就

应该添加测试,所以你可以做大幅度地修改,而不必担心会令整个项目陷入混乱。这真

是太有威力了。

本书到了第三版,我更认识到เ测试是如此地重要,以至于必须应用到书里的实际示例中ณ。

在20่02年cນrestedbutte夏令营实习生的协助下,我们开了一套测试系统,它们被应

用于全书。第十五章是其代码与描述。此系统大大增强了本书๰示例代码的强壮性。

结对编程

我们向来被灌输个人主义,无论是学校我们成败都靠自己,与邻座合作被视为“作弊”

或是媒体。尤其是好莱坞电影,其中的英雄总是反抗盲目的顺ิ从

1้3

。“结对编程”反对这

种丑陋的个ฐ人主ว义。程序员被视作个ฐ人主义的典范,laທrry9e喜欢称之为“编

码牛仔”。然而与传统思想作战的xp认为,应该两个ฐ人合用一部机器写代码。而且应该在

一个公共区域内,放一组机器,不要在其中使用室内设计师最喜欢的隔板。实际上,bຘeck

就认为转向xp的第一步是拿起螺丝刀和扳手,把所有碍事的东西都拆掉

14๒

。这可就需要

一个能够平息设备部门的愤怒的经理。

结对编程的价值在于,在某个人思考时,另一个人就实际编码。思考者要把握系统全局,

不仅是手边的问题,还有xp的所有准则。如果两个人都在工ื作,就不太可能会有人说:“我

书签 上一章 目录 下一章 书架s
推荐阅读: 惹上霸道殿下 花好孕圆好看吗 长姐田园免费完结阅读笔趣阁 新鹿鼎记演员 从1999到2003 薄爱避孕套是什么牌子 无限透支信用卡 我把真心向明月 夏娃 九剑录txt下载东落宇 南心北往总裁的隐婚妻txt百度云