20172316 2017-2018-2 《程序设计与数据结构》 实验三报告

课程:《程序设计与数据结构》
班级: 1723
姓名: 赵乾宸
学号:20172316
实验教师:王志强
必修/选修:必修


1.实验内容

敏捷开发与XP实践

  • (1)代码规范
  • (2)协同测试
  • (3)重构
  • (4)密码学应用

2. 实验过程及结果

(1)代码规范:

针对下面的代码进行操作:

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));
}
}

首先安装alibaba 插件,实现代码重新格式化
得到

/**
 * CodeStandard class 
 * 
 * @author 赵乾宸
 * @date 2018/05/16
 */
public class CodeStandard {
    public static void main(String[] args) {
        final int maxCapacity = 20;
        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() < maxCapacity) {
            buffer.append("1234567");
        }
        for (int i = 0; i < buffer.length(); i++) {
            System.out.println(buffer.charAt(i));
        }
    }
}

--->研究Code菜单,找出感觉最好的功能,我最喜爱的是Move Statement Down,Move Statement Up这两个可以将光标所在的statement(语句块?)向上或向下挪动。

-->蓝墨云地址<--


(2)协同测试

取用20172329王文彬同学的代码Mycomplex.java进行测试,测试完毕后git log如下:

import org.junit.Test;

import static org.junit.Assert.*;

public class MyComplexTest {
    static MyComplex com1 = new MyComplex(1, 1);
    static MyComplex com2 = new MyComplex(1, 1);
    static MyComplex com3 = new MyComplex(2, 2);
    static MyComplex com4 = new MyComplex(0 ,0);
    static MyComplex com5 = new MyComplex(1, 0);
    static MyComplex com6 = new MyComplex(0, 2);

    @Test
    public void equals() throws Exception{
        assertEquals(com1.equals(com2), true);
    }

    @Test
    public void complexAdd() throws Exception{
        assertEquals(com1.ComplexAdd(com2).toString(), com3.toString());
    }

    @Test
    public void complexSub() throws Exception{
        assertEquals(com1.ComplexSub(com2).toString(), com4.toString());
    }

    @Test
    public void complexMulti() throws Exception{
        assertEquals(com1.ComplexMulti(com2).toString(), com6.toString());
    }

    @Test
    public void complexDiv() throws Exception{
        assertEquals(com1.ComplexDiv(com2).toString(), com5.toString());
    }

}

码云地址为https://gitee.com/CS-IMIS-23/20172327wwb/blob/master/Test/exp/MyComplexTest.java

-->蓝墨云地址<--

(3)重构

对同学代码进行三项重构,
第一个:pp23.java,对其求商的变量名进行重构。

第二个:homework2.java, 对其文件名进行重构。

扫描二维码关注公众号,回复: 1073067 查看本文章

第三个:Cow.java,将其中几个父类封装过的变量引用重构为getter。

防止出现意外错误,结果没有上传至王文彬码云,但蓝墨云有重构后详细截图

-->蓝墨云地址<--

(4)密码学应用

参考http://www.cnblogs.com/rocedu/p/6683948.html以结对的方式完成Java密码学相关内容的学习,结合重构,git,代码标准。

凯撒密码

成果:

Java对称加密-DES算法

成果:

Java非对称加密-RSA算法

成果:

使用密钥协定创建共享密钥

成果:

Java摘要算法- MD5

成果:

-->蓝墨云地址<--


3. 实验过程中遇到的问题和解决过程

  • 问题1:代码不符合格式(alibaba的),特别是创建者信息部分,改了几次不行
  • 问题1解决方案:一直改动,其中还尝试了教科书上的格式
//*******************************************************************
//  CodeStandard.java       Author: ZhaoQianchen
//
//  A standard of code.
//*******************************************************************

没有效果,查看了Inspection Result信息之后,发现alibaba代码规范的这一部分的格式十分严格必须一模一样,像这样:

/**
 * CodeStandard class
 *
 * @author 赵乾宸
 * @date 2018/05/16
 */

  • 问题2:从同学码云上clone下来的程序修改后push不上
  • 问题2解决方案:根据IDEA的提示,进行merge(合并),虽然不太懂,之前一直以为合并会发生文件还原的现象,导致自己的测试类被删除,一直不敢点击。不过点完之后还是没什么问题,成功上传。

------

其他(感悟、思考等)

参考资料

《Java程序设计与数据结构教程(第二版)》
《Java程序设计与数据结构教程(第二版)》学习指导
《Intellj IDEA 简易教程》
《实验三 敏捷开发与XP实践》

猜你喜欢

转载自www.cnblogs.com/zhaoqianchen/p/9102634.html
今日推荐