- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第21部分测试驱动开发重构
第21章 测试驱动开发与重构 暨南大学计算机科学系 黄战 目标 在案例研究的语境中介绍这两种重要的开发实践。 overview 简介 极限编程(XP)所提倡的重要测试实践是:首先编写测试。 它还提倡不断地重构代码以改进质量,包括降低冗余、提高清晰度等。 现代工具都支持这两种实践,并且有许多OO开发者信赖这些实践的价值。 测试驱动开发(测试优先开发) 测试驱动开发(TDD)迭代和敏捷XP方法提倡的优秀实践。 在TDD风格的OO单元测试中,要在测试类之前编写测试代码,并且开发者要为几乎所有的产品代码编写单元测试。 TDD的基本规律是编写一小段测试代码,然后再编写一小段产品代码,保证其通过测试,然后再编写更多的测试代码,依此类推。 先写测试代码,此时不妨想象被测代码已经写出来了。 测试驱动开发的优点 能够保证编写测试--人们往往会忽略单元测试。 使程序员获得满足感从而更始终如一地坚持编写测试(我能够编写通过这一测试的代码吗?) 有助于澄清接口和行为的细节 可证明、可再现、自动的验证 改变事物的信心 示例 遵循以下模式完成每个测试方法: 1)创建测试固件。 2) 对其完成某些操作(你所希望测试的某些操作) 3) 评估结果是否为期望值。 我们没有先编写所有的单元测试,而是只编写了一个测试方法,在类中实现该方法并确保通过测试,然后再反复这一过程。 重构 重构是重写或重新构建已有代码的结构化和规律性方法,但不会改变已有代码的外在行为,而是采用一系列少量转换的步骤,并且每一步都结合了重新执行的测试。 不断地重构代码也是XP的一个实践,该实践也适用于所有的迭代方法(包括UP)。 重构 重构的本质是: 一次实行一小步保留行为的转换(每次转换都称为“重构”)。 每次转换后,要重新执行单元测试,以保证重构不会导致错误。 重构和TDD具有关系--所有的单元测试要支持重构过程。 重构 每次重构是: 少量的但是一系列的改变。 每次重构都伴随着重新执行的单元测试。 会对代码和设计产生主体性的重新构造,同时所有的重构都要保证代码的行为与过去一致。 重构的命名 提炼方法(Extract Method) 将较长的方法转换为短小的方法,其中将原有方法,其中将原有方法中的部分内容分解为私有的帮助者方法(helper method) 提炼常量(Extract Constant) 使用常量变量(constant variable)替换字面常量 引入解释变量(提炼局部变量的特化) 将表达式的部分或完整结果置入临时变量,该变量的名字应该能够说明其目的 使用工厂方法替代构造器调用 例如Java中,调用创建对象的帮助者方法(helper method)来代替对新操作和构造器的调用(隐藏细节) Fig. 21.1 Fig. 21.2 public class Player { private Piece piece; private Board board; private Die[] dice; // … public void takeTurn() { // roll dice int rollTotal = 0; for (int i = 0; i dice.length; i++) { dice[i].roll(); rollTotal += dice[i].getFaceValue(); } Square newLoc = board.getSquare(piece.getLocation(), rollTotal); piece.setLocation(newLoc); } } // end of class Fig. 21.3 public class Player { private Piece piece; private Board board; private Die[] dice; // … public void takeTurn() { // the refactored helper method int rollTotal = rollDice(); Square newLoc = board.getSquare(piece.getLocation(), rollTotal); piece.setLocation(newLoc); } private int rollDice() { int rollTotal = 0; for (int i = 0; i dice.length; i++) { dice[i].roll(); rollTotal += dice[i].getFaceValue(); } return rollTotal; }
您可能关注的文档
- 第15课时units56ook5.ppt
- 第15课时二次函数与元二次方程.ppt
- 第15课人生更加灿烂.ppt
- 第15课时压电阻.ppt
- 第15课时中现代科技教育文化与社会生活.ppt
- 第15课文化运动和马克思主义的传播邹宝刚.ppt
- 第15课时nits34book9.ppt
- 第15课习课件戊戌变法课件.ppt
- 第15课伟大的开说课件.ppt
- 第15课性之光.ppt
- 2026年投资项目管理师之宏观经济政策考试题库300道附答案【精练】.docx
- 超星尔雅学习通《形势与政策(2025春)》章节测试附完整答案(网校专用).docx
- 超星尔雅学习通《形势与政策(2025春)》章节测试带答案(研优卷).docx
- 超星尔雅学习通《形势与政策(2026春)》章节测试题附参考答案(实用).docx
- 2026年刑法知识考试题库a4版.docx
- 2026年刑法知识考试题库标准卷.docx
- 2026福建泉州市面向华南理工大学选优生选拔引进考试题库新版.docx
- 2026年国家电网招聘之文学哲学类考试题库300道含完整答案(夺冠).docx
- 2026年法律职业资格之法律职业客观题一考试题库300道含答案【巩固】.docx
- 2026年刑法知识考试题库【精练】.docx
最近下载
- 梅赛德斯-奔驰-GLC SUV-产品使用说明书-GLC 43 AMG 4MATIC (2533640J6EB)-253364-GLC级SUV使用手册.pdf VIP
- 郓城县地图菏泽市郓城县乡镇街道地图高清矢量可填充编辑地图PPT模板.pptx
- iKuai爱快企业级WiFi6无线路由器 IK-Q3S说明书.pdf
- 2024年国家电网吉林分公司秋招面试真题及答案解析(半结构化).doc
- T_SHSIC 0202—2023(数据中心浸没式液冷系统单相冷却液技术指标和测试方法).pdf VIP
- 国家开放大学《管理英语4》参考试卷与答案.pdf
- 力士乐A11VO液压泵样本.pdf VIP
- xrd课件分析.pptx VIP
- 2025年人工智能与机器学习考试题及答案.docx VIP
- 《医疗器械经营质量管理规范自查表》.doc VIP
原创力文档


文档评论(0)