- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实践软件工程
第 1章
本章内容:
● 编写从开始就正确的代码
● 编写保持正确的代码
本章 代码下载文件:
可以在 /go/reliablejavascript 的 Download Code 选项卡中找到本章的
代码下载文件。代码在Chapter 1 下载文件中,并按照本章的主题组织到各个目
录中,每个目录含有一个样例。可以通过将样例目录复制到硬盘并双击index.html 文件的
方式运行样例。
没有什么职业比计算机编程更加震撼人心了。如果开始做的事情是正确的,就可以在
20 分钟左右完成一天的工作。这就是我们一天中编写被调试代码所需的时间。
剩余的时间将被花费在纠正由编译器、QA 同事、老板和客户所提出的问题上。
作为曾在“成熟”系统中工作过的开发者,我们也花费了大量时间重构了多年以后变
得脆弱和不可维护的代码(或者希望它可以被重构) ,而这正是由我们的同事或自己糟糕的
设计所造成的。
不过,我们仍然相信自己是非常聪明的,而这只会使事情变得更糟。在生活中,我们
可以自己解决问题。我们喜欢谜语和问题。我们是不喜欢询问方向和不喜欢阅读指令的专
家(大多数人都是专家,而这可能使事情变得更糟) 。
遇到问题时,我们是乐观的,相信自己可以找到解决方案。
本章提供了一些好消息。软件开发者是非常聪明的,其中一些人开发出了有用的工具,
可以帮助我们创建远比一天20 分钟的代码价值更高的代码,并大大增加了审美的满足感。
这些并不是新的技术。本章的所有理念都至少存在了十年以上。不过,在为团队中的
第Ⅰ部分 奠定坚实的基础
开发职位面试众多候选人时,不论是来自美国还是其他国家,很少有人听说过SOLID 缩写
背后的理念(更不要说这个缩写本身) 。他们可能听说过DRY 代码,但是他们并未领会到它
在优秀的软件开发中绝对的核心地位。关于单元测试的误解比比皆是,许多开发者并未意
识到由测试驱动开发过程的优点。
在掌握了这些理念之后,你就会成为精英中的一份子。大多数开发者知道面向对象编
程,但只有少数人知道依赖反转和里氏代换原则(Liskov Substitution Principle) 。掌握测试驱
动开发的开发者就更少了。
1.1 编写从开始就正确的代码
Johann Sebastian Bach 曾经说过一段关于键盘乐器的话,这同样适用于计算器编程:没
有什么特别值得注意的,所有需要做的事就是在正确的时间敲击正确的键,然后乐器自己
就会演奏。
本节将讨论如何在正确的时间敲击正确的键。你可能已经猜到了,这比外行人所考虑
的内容要多。
接下来首先是一个故事。
1.1.1 掌握JavaScript 的特性
你是否曾经看到过某人在壁球室中被球猛击头部?我们中的某个人曾经看到过。这发
生在大学生入门的运动课上,但是这个情节将教会我们许多关于编写可靠JavaScript 的知识。
你可能不熟悉这个游戏,这是在球场(像是一个大房间)上玩的一个运动。两个球员使
用球拍轮流向后面的(两个人同时面对的)墙上击球。在大多数常见的情景中,把球击向墙
壁以后,它将反弹,然后从地面弹向你的对手,他就站在你的旁边。然后他将把球击向后
墙,让你尝试击打它。
无论如何,这是第一天的课程。教练站在学生左侧稍后一点的位置,其他人则通过前
面的玻璃墙观看。教练指导学生把球击向后墙。
这个学生曾经是一个网球运动员,他就像在打网球一样正手击球,从低到高击球,一
直到球拍围绕身体转了一圈。这是网球中实现上旋球的动作。这个动作也可以猛击碰巧站
在左侧稍后一点位置的人的头部。
幸运的是,教练知道会出现这个情况,所以已经将球拍放在了脸的前方作为防御。
学生的球拍撞上了教练的球拍,这产生了大量噪音,也给学生带来了一些尴尬,但是
没有造成伤害。
教练指出:在网球中通常需要打出上旋球,从而使球俯冲下来,然后用力弹向对手。
不过,相同的击打方式在壁球中产生了相反的效果。如果打出了上旋球,那么壁球将会撞
上墙壁,产生一个简单的弧形,然后以缓慢的方式弹离地面,此时对手可以轻松解决它。
在壁球中,需要打出下旋球。这样壁球将会向下撞击墙壁,再从地面以非常快的速度撞向
对手。
壁球中的正常击打动作是砍,向下挥动产生下旋球——正好与网球中常见的击打动作
4
文档评论(0)