20172323 2017-2018-2 《程序设计与数据结构》实验三报告
课程:《程序设计与数据结构》
班级: 1723
姓名: 王禹涵
学号:20172323
实验教师:王志强
实验日期:2018年5月27日
必修/选修: 必修
1.实验内容
实验三 敏捷开发与XP实践
(1)代码规范
- http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA
- 参考 代码规范 安装alibaba 插件,解决代码中的规范问题。
- 在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能。提交截图,加上自己学号水印。
public class CodeStandard { public static void main(String [] args){ StringBuffer buffer = new StringBuffer(); buffer.append('S'); buffer.append("tringBuffer"); System.out.println(buffer.charAt(1)); System.out.println(buffer.capacity()); System.out.println(buffer.indexOf("tring")); System.out.println("buffer = " + buffer.toString()); if(buffer.capacity()<20) buffer.append("1234567"); for(int i=0; i<buffer.length();i++) System.out.println(buffer.charAt(i)); } }
(2)协同测试
在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后git add .; git commit -m "自己学号 添加内容";git push;
提交搭档项目git log的截图,包含上面git commit的信息,并加上自己的学号水印信息。
(3)重构
http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA
完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。
(4)密码学应用
参考 http://www.cnblogs.com/rocedu/p/6683948.html, 以结对的方式完成Java密码学相关内容的学习,结合重构,git,代码标准。
提交学习成果码云链接和代表性成果截图,要有学号水印。
2. 实验过程及结果
1.代码规范
- 打开
Settings
->Plugins
->Browse repositories...
在搜索框输入alibaba
即可看到Alibaba Java Code Guidelines
插件,点击Install
进行安装,然后重启IDE生效: - 右键点击需要规范的代码文件,会出现一个“代码规约扫描”,单击后不规范的地方会定位到行,有些可以一键修复,有些需要手动修复,总之这一步比较简单,不再详述
2.协同测试
- 先加入结对同学的编程项目,复制Complex文件代码到本地
- Complex代码提供了一种算法,首先生成JUnit测试文件,定义一串变量
Complex num1 = new Complex(1,2); Complex num2 = new Complex(1,-2); Complex num3 = new Complex(2,2); Complex num4 = new Complex(2,-2);
数字可以随便设定,然后在不同的方法下写测试语句,比如在testComplexAdd方法下写测试语句assertEquals(new Complex(2,0),num1.ComplexAdd(num2));
,类似地再在其他测试方法下写相似的语句,运行之后显示测试已通过,点击右下角有一个Event Log
并截图如下
3.重构
重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。
先选择一个以前的Java文件,首先看名字book.java,没什么大的问题。代码好像也没什么不易于阅读,不易于维护,不易于变更的地方
可是非要重构一下,那就只有勉为其难地封装一下,添加setxxx()
的语句在括号里加上string a
一类的,最后再在前端加上
public Book(String a,String b, String c, String d){ setBookname(a); setAuthor(b); setPress(c); setCopyrightdate(d); }
重构就算完成了,似乎更加不易变更了呃呃呃
4.密码学应用
虽然要操作的内容比较多,但基本还是以复制粘贴为主。但好像还是有一些需要不只是复制粘贴,比如创立DH公钥和私钥这一步,就需要先创建A和B两个目录,然后再分别在两个目录中执行操作创立公钥和私钥。
3. 实验过程中遇到的问题和解决过程
问题:进行JUnit测试时,通过不同地方生成的JUnit测试不一样额
问题1解决方案:下图是通过右键点击类名Complex然后在选项中选择生成->JUnit4测试生成的
而这张图是通过在类名Complex处alt
+enter
弹出的创建JUnit4测试出来的
按理说应该是一样的,但是最后生成的测试区别很大
4.其他
虽然教材的内容已经告一段落了,但是学习的海洋是无法穷尽的。就比如本次实验四个步骤每一步都有很多全新的东西,所以学习的脚步永远不能停歇!
5.参考资料
-
《Java程序设计与数据结构教程(第二版)》
-
《Java程序设计与数据结构教程(第二版)》学习指导