课程:《程序设计与数据结构》
班级: 1723
姓名: 方艺雯
学号:20172314
实验教师:王志强
实验日期:2018年5月16日
必修/选修: 必修
1、实验内容
(1)代码规范
http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA。
参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装alibaba 插件,解决代码中的规范问题。
在IDEA中使用工具(Code->Reformate Code)把指定代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能。
(2)协同测试
在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例。
(3)重构
http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA。
(4)密码学应用
参考 http://www.cnblogs.com/rocedu/p/6683948.html,以结对的方式完成Java密码学相关内容的学习,结合重构,git,代码标准。
2、实验要求
1、提交截图,加上自己学号水印。
2、测试成功后git add .; git commit -m "自己学号 添加内容";git push;提交搭档项目git log的截图,包含上面git commit的信息,并加上自己的学号水印信息。
3、完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。
4、提交学习成果码云链接和代表性成果截图,要有学号水印。
3、实验过程及结果
准备:下载安装alibaba 插件。
实验一
- 过程:
1、打开Settings
->Plugins
->Browse repositories...
2、在搜索框输入alibaba
即可看到Alibaba Java Code Guidelines
插件,点击Install
进行安装
3、输入原始代码
4、右键点击类名,再点击编码规约扫描
5、发现问题
6、点击Code
下的Reformate Code
格式化代码 - 一般命名规则
- 要体现各自的含义
- 包、类、变量用名词
- 方法名用动宾
- 包名全部小写,如:io,awt
- 类名第一个字母要大写,如:HelloWorldApp
- 变量名第一个字母要小写,如:userName
- 方法名第一个字母要小写:setName
- 结果截图:
实验二
- 过程:伙伴的代码是直接复制粘贴的,没有使用克隆,编写Junit单元测试,几个测试用例是类似的,git log是第一次使用。
- 需要测试的方法 有:
ComplexAdd()
,ComplexSub()
,ComplexMulti()
,ComplexDiv()
- 结果截图:
实验三
-
过程:我使用了 toString、 Rename、Generate getter,由于没有找到组员的有问题的代码,所以没有什么错误改正。
-
重构的目的:
- 增加新功能;
- 原有功能有BUG;
- 改善原有程序的结构;
- 优化原有系统的性能 。
-
需要重构的地方:代码重复、方法过长、参数列过长、条件逻辑过度复杂、分支语句
-
结果截图:
实验四
- 过程:学习密码算法,参考博客
- Java安全体系结构总共分为4个部分:
- JCA( Java Cryptography Architecture, Java加密体系结构):JCA提供基本的加密框架, 如证书、 数字签名、消息摘要和密钥对产生器。
- JCE( Java Cryptography Extension, Java加密扩展包):JCE在JCA的基础上作了扩展, 提供了各种加密算法、 消息摘要算法和密钥管理等功能。JCE的实现主要在javax.crypto包( 及其子包) 中
- JSSE( Java Secure Sockets Extension, Java安全套接字扩展包):JSSE提供了基于SSL( Secure Sockets Layer,安全套接字层) 的加密功能。 在网络的传输过程中, 信息会经过多个主机(很有可能其中一台就被窃听) , 最终传送给接收者, 这是不安全的。这种确保网络通信安全的服务就是由JSSE来提供的。
- JAAS( Java Authentication and Authentication Service, Java鉴别与安全服务):JAAS提供了在Java平台上进行用户身份鉴别的功能。
- 凯撒密码算法:将字母表中的字母移动一定位置而实现加密。
- 具体步骤:
(1)根据凯撒密码特性设计算法
(2)传入需要计算的字符串
(3)处理计算结果
- 具体步骤:
- 结果截图:
4、实验中遇到的问题和解决过程
- 问题一:在做实验二的时候,测试类总是出错。
- 问题一解决:原因是在比较的时候没有加toString,必须是两个字符串型的才可以比较,改为如下就正确了。
assertEquals(new Complex(0,4).toString(),num1.ComplexAdd(num2).toString()
5、其他
这次的实验学到了很多关于代码的规范,一些方便的用法,感觉还是很实用的。