- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《软件配置管理》
实验报告
项目名称 代码味道及重构试验
专业班级
学 号
姓 名
实验成绩:
批阅教师:
2016年 04月 20日
实验二 代码味道及重构实验
实验学时: 4
每组人数: 1
实验类型: 2 (1:基础性 2:综合性 3:设计性 4:研究性)
实验要求: 1 (1:必修 2:选修 3:其它)
实验类别: 3 (1:基础 2:专业基础 3:专业 4:其它)
一、实验目的
1. 熟悉常见代码味道的涵义和特征;
2. 熟悉常用的代码重构手段;
3. 学会使用常用重构手段对常见代码味道进行重构;
4. 学会使用设计模式来进行重构;5. 掌握一种代码味道识别工具(CSDT);
6. 熟悉Eclipse重构菜单;
7. 学会使用Eclipse AST来解析Java源代码;
8. 设计并实现一种代码味道的自动识别方法;
9*. 设计并实现一种代码味道的自动重构方法。
二、实验内容
1. 根据常见代码味道的特点,选取合适的重构手段对它们进行重构,填写相应的表格;
2. 选取三种设计模式,设计模式可以的代码味道以及重构到设计模式的过程中所使用的手段填写相应的表格;3. 掌握一款代码味道识别工具,并使用该工具对至少一个实验项目进行代码味道识别,寻找存在代码味道的类和代码片段;【参考资料:七款代码味道识别工具/lovelion/article/details
4. 学习使用Eclipse重构(Refactor)菜单,从实验项目中选取合适的代码进行重构操作;
5. 自学Eclipse AST,包括获取、访问、创建和修改AST等操作,使用Eclipse AST设计并实现一个信息统计/lovelion/article/details/lovelion/article/details/lovelion/article/details/lovelion/article/details 】
6. 选取一种代码味道,设计并实现相应的代码味道识别方法,选取至少一个实验项目进行测试;
7*(选做)/s/1sjqENDj
(2) ASTView下载地址:/s/1gdkT8rx
(3) 5个实验项目下载地址:/s/1kTvAIQ7
(4) 10个补充实验项目下载地址:/s/1c0thjpQ
三、实验要求
1. 针对常见的代码味道,选择合适的重构手段,填写相应的表格,要求表格需填写完整;
2. 选取三种常用的设计模式,设计模式可以的代码味道以及重构到设计模式的过程中所使用的手段填写相应的表格;3. 选取一款代码味道识别工具,记录对实验项目的代码味道识别结果,包括识别到的类名和代码片段;
4. 使用Eclipse重构(Refactor)菜单对实验项目中的代码进行重构(自行选取合适的代码),要求提供重构前后的代码【至少需使用10种重构手段】;
5. 学习Eclipse AST,要求通过Eclipse AST设计一个信息统计可以统计类中的个数、的个数、行数、最多的方法名代码行数、个数最多的方法名及其参数的个数信息6. 针对一种代码味道,设计并实现相应的识别方法,要求对方法原理进行说明,需提供文字介绍(可包含流程图)、核心代码以及相应的测试结果和分析;
7*(选做)
四、实验步骤
1. 填写代码味道和重构手段表格;
2. 填写设计模式、代码味道和重构手段表格;3. 选取一种代码味道识别工具,对常见代码味道进行识别,记录识别结果;
4. 学习使用Eclipse Refactor菜单,熟悉至少10种常用的重构操作;
5. 学习Eclipse AST,使用AST设计并实现一个信息统计程序*(选做)
五、实验结果
1. 针对22种常见的代码味道,选择合适的重构手段,填写如下表格:
代码味道名称 常用重构手段 过长方法(Long Method) 抽取函数(Extract Method)以查询取代临时变量(Replace Temp With Query)引入参数对象(Introduce Parameter Object)保持对象完整(Preserve Whole Object)以函数对象取代函数(Replace Method with Method Object)
文档评论(0)