2017-2018-2 20165207 实验三《敏捷开发与XP实践》实验报告
java 实验三 实验报告
实验内容
代码规范
不规范的代码可能妨碍阅读,在粘贴下来老师在云班课中设置的提交点一的代码之后,我首先使用了IDEA中Code选项卡的Reformat Code功能规范代码的格式
然后,我下载了alibaba插件,对代码的规范进行进一步的学习。首先这段代码中没有包含关于作者的注释信息
然后,添加我的学号作为author的注释信息,再在for循环的括号里把直接使用的数字(“魔法值”)改成了赋了值的变量
再进行编码规约扫描,不建议使用行注释,遂改之
对于Code菜单,我觉得Generate是一个很方便的功能,可以直接生成重写方法还有构造方法的框架,用快捷键Alt+Insert十分方便
最后,这是第一个检查点提交的截图:
结对
此部分,首先我和搭档贾普涵同学互相地把对方加为自己项目的……管理员,对,就是管理员:
然后在IDEA中下载下来他的项目,找到上次实验的Complex代码
在测试代码中添加测试用例:
通过测试的结果:
下面的截图下方是搭档的项目的Git log ,包含了我添加测试用例后进行提交的提交记录
重构
通过老师的博客,我了解到重构是指在不改变软件外部行为的基础上,改变软件的内部结构,使软件更加易于阅读、易于维护、易于变更。
重构的内容包括对于不规范的变量名进行重新命名,提炼出代码中重复的功能,修改过长的方法以及参数列,将复杂的逻辑条件式分解等等内容。
我搭档的代码可以说都非常合乎规范,几经阅读之后,我决定对搭档第六周课下测试的CPU代码进行重构,当然在重构之前我现学现卖地在程序中添加了@author的注释信息:
最开始的代码我忘记截图了,下面只好一部分一部分地说明我重构搭档的这个程序的过程。
首先CPU的属性speed这里原来没有使用private修饰speed的名字是s
变量的属性是友好型的可以直接用圆点使用这个变量就像C语言中的结构体,但是程序中有setSpeed和getSpeed两个方法,所以说在这里将变量的属性设为友好型是不合乎封装的要求的。另外最初的变量s应当是CPU的速度属性,这个名字并不“清晰”。在这两个地方进行了重构,将变量的属性设为private,把s的名字改为speed,下面是修改之后的结果
下一处能够进行重构的地方是重写的equals和toString方法,在上面增加@Override
然后,就没有特别可以重构的地方了,这是第三个检查点的截图
结对学习Java密码学相关内容
对称加密算法-DES
Triple-DES是DES算法的改进,相比DES安全性得到了提高。获取密钥生成器传入的字符串参数是“DESede”,这样程序就知道我们用的是Triple-DES算法。并且还需要注意的是
- 密钥的保存方式可以有两种。或者是将密钥以对象序列化的方式保存在文件中此时文件中保存的是对象,ObjectOutputStream类中提供的writeObject方法可以将对象序列化,以流的方式进行处理。这里将文件输出流作为参数传递给ObjectOutputStream类的构造器,这样创建好的密钥将保存在文件key1.data中。或者以字节形式写入到文件中,首先创建文件输出流对象给其指定目的文件也就是我们保存密钥的文件,然后调用文件输出流的write方法,并将参数指定为存有密钥内容的字节数组,就可以把字节数组中的密钥内容以字节的形式写入到目的文件中。前者操作起来相对方便,后者能够通过字节数组更直观的将密钥中的内容打印出来。在我们学习的老师的示例中,这两种办法前后是衔接到一起的,第一个先用对象序列化的方式把密钥存进文件key1.dat中。但是这样虽然存进去了密钥,我们不知道它的内容。但是用后一种办法就可以,创建一个文件输入流,输入流的源是刚才生成的文件。创建输入流成功之后将其作为参数传给新建的对象输入流对象输入流就可以读取刚才对象序列化的密钥文件,使用的是对象输入流的readObject方法返回一个Object对象。再将其强制类型转换为Key类,这样新建的Key类的对象就能够调用getEncode方法把密钥的内容传入字节数组中,通过输出字节数组就可以输出查看密钥。
单向散列函数MD5算法
最开始的时候,我们编写代码时忘记用类方法getInstance创建对象,希望直接使用构造器new MessageDigest() 创建对象。这样并不合乎要求,IDEA为了纠正错误自动
在我们的程序中添加了内部类重写了MessageDigest对象protected的方法,发生这张图片的问题
所以一定要记住这个“工厂类”创建新对象的方法。
修改为getInstance
输入20165204and20165207经MD5算法计算后得到下图输出结果
学习成果
对称加密算法DES
非对称加密算法RSA
单向散列函数算法MD5
Git log 截图
这里有几个地方是我和搭档分工之后,提交的时候我们忘记了pull,所以有几个merge操作才提交上去,以后我们一定注意。
2017-2018-2 20165207 实验三《敏捷开发与XP实践》实验报告的更多相关文章
- 20162311 实验三 敏捷开发与XP实践 实验报告
20162311 实验三 敏捷开发与XP实践 实验报告 实验内容 一.研究学习IDEA中的Code菜单 使用Code ->Reformate Code功能将以下代码格式化 public clas ...
- 20165230 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20165230 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: 指导教 ...
- 20145308刘昊阳 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20145308刘昊阳 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...
- 20165308实验三 敏捷开发与XP实践实验报告
实验三 敏捷开发与XP实践实验报告 实验目的 安装 alibaba 插件,解决代码中的规范问题.再研究一下Code菜单,找出一项让自己感觉最好用的功能. 在码云上把自己的学习搭档加入自己的项目中,确认 ...
- 20155207王雪纯 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20155207王雪纯 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...
- 20155220 实验三 敏捷开发与XP实践 实验报告
20155220 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...
- # 20155224 实验三 敏捷开发与XP实践 实验报告
20155224 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...
- 20155226 实验三 敏捷开发与XP实践 实验报告
20155226 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...
- 20155311 实验三 敏捷开发与XP实践 实验报告
20155311 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 xp核心工具 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...
- 2016-2017-2 20155339 《Java面向对象程序设计》实验三敏捷开发与XP实践实验报告
2016-2017-2 20155339 <Java面向对象程序设计>实验三敏捷开发与XP实践实验报告 实验内容 XP基础 XP核心实践 相关工具 实验内容 一.在IDEA中使用工具(Co ...
随机推荐
- Python 练习题:计算 MAC 地址
#!/usr/bin/env python #-*- coding:utf-8 -*- ''' 给一个MAC地址加1 ''' mac = '52:54:00:e6:b2:0a' prefix_mac ...
- Android AndroidManifest.xml配置文件
AndroidManifest.xml配置文件介绍本质:AndroidManifest.xml是整个应用的主配置清单文件.包含:该应用的包名.版本号.组件.权限等信息.作用:记录该应用的相关配置信息. ...
- Eclipse背景与字体大小和xml文件中字体大小设置
1.打开window / Preference,弹出Preference面板 2.展开General标签,选中Editors选项,展开. 3.选中 Text Editors,右边出现 TestEd ...
- Excel 2010 最熟悉的陌生功能:筛选器(将当前所选内容添加到筛选器)
使用excel2010版的同学,在进行筛选时,肯定都对这句话很熟悉:将当前所选内容添加到筛选器.但很多同学天天看到,却不知道什么是筛选器?它有什么作用. 其实,这里所指的筛选器就是储存筛选结果的一个虚 ...
- vux报错 this指针问题
报错: 代码: 结果:取不到this.tishi,不明白为什么在请求内部会取不到这个值. 分析:this可能有问题 解决: 结果: 这样就能取到this.tishi的值了. 总结: methods:{ ...
- 11.事件驱动events
事件驱动events ==> events.EventEmitter, EventEmitter 的核心就是事件发射与事件监听器功能的封装更详细的 API 文档参见 http://nodejs. ...
- mysql数据类型及存储过程
转自:http://www.cnblogs.com/mark-chan/p/5384139.html 存储过程简介 SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为 ...
- java反射(一)
在JDK中,主要由以下类实现java反射机制:Class类:代表一个类,Filed类:代表类的成员变量,Method类:代表类的方法,Constructor类:代表类的构造方法,Array类:提供平了 ...
- git下载和上传项目
首先是git的下载和安装: https://www.cnblogs.com/chenxqNo01/p/6372933.html git的简单使用: 从码云 clone 项目: git clone ht ...
- 编程中,static的用法详解
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用.一.面向过程设计中的sta ...