2018-2019-2 20175207 实验三《敏捷开发与XP实践》实验报告


- [Git中添加添加仓库成员及测试代码](#jump2)

- [重构练习](#jump3)

- [码云链接](#jump4)

  • 在IDEA中安装alibaba 插件

    • File -> Settings -> Plugins -> Marketplace 在搜索框内搜索 alibaba -> 安装
      2018-2019-2 20175207 实验三《敏捷开发与XP实践》实验报告
  • 使用

    • Code -> Reformat Code (或Ctrl + Alt +L
    • 单击右键 ->编码规约扫描
    • 将光标移至代码中划〰的部分,根据提示Ctrl + F1会出现完整的提示信息。
    • 点击下面窗口中划〰的部分,会出现提示信息
      2018-2019-2 20175207 实验三《敏捷开发与XP实践》实验报告
      2018-2019-2 20175207 实验三《敏捷开发与XP实践》实验报告
  • Code菜单
    Code菜单真的太太太太太太太太好用了!!!!

    • Surrand With (或Ctrl + Alt + T):有许多常用以及不常用的语句。

    • Override Methods(或Ctrl + O):重写覆盖方法。好处是你可以避免由于自己的粗心而出现的语法问题。

    • Generate(或Alt + Insert):可以直接产生Test及其大致框架。
      2018-2019-2 20175207 实验三《敏捷开发与XP实践》实验报告

    • 移动 行

    菜单中名称 快捷键 作用
    Move Statement Down Shift + Ctrl + 向下箭头 将光标所在这一行和下一行交换
    Move Statement Up Shift + Ctrl + 向上箭头 将光标所在这一行和下一行交换
    Move Line Down Shift +Alt + 向下箭头 将光标所在这一行和下一行交换
    Move Line Up Shift +Alt + 向上箭头 将光标所在这一行和下一行交换

    Move StatementMove Line的区别:(例如)

 System.out.println("buffer = " + buffer.toString());  //1
 if (buffer.capacity() < 20)
            buffer.append("1234567");
单击注释1所在这一行,```Move Statement Down```会使上下行语句调换,且注释行语句进入```if```结构中,效果如下:
 if (buffer.capacity() < 20) {
        System.out.println("buffer = " + buffer.toString());//1
        buffer.append("1234567");
  }
而```Move Line Down```只会使上下行语句调换,调换后,```if```循环内不再保留原循环内语句,效果如下:
 if (buffer.capacity() < 20)
        System.out.println("buffer = " + buffer.toString());//1
        buffer.append("1234567");

要求:在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后git add .; git commit -m "自己学号 添加内容";git push;提交搭档项目git log的截图,包含上面git commit的信息,并加上自己的学号水印信息。

  • 在Git中添加添加仓库成员
    • 打开码云,进入仓库,按下图所示操作:
      2018-2019-2 20175207 实验三《敏捷开发与XP实践》实验报告
    • 效果:
      2018-2019-2 20175207 实验三《敏捷开发与XP实践》实验报告

2018-2019-2 20175207 实验三《敏捷开发与XP实践》实验报告

  • 搭档代码:
public class Complex {
    int RealPart;
    int ImagePart;
    public Complex(){}
    public Complex(int R,int I){
        RealPart = R;
        ImagePart = I;
    }
    public int getRealPart(){
        return RealPart;
    }
    public int getImagePart(){
        return ImagePart;
    }
    public String toString(){
        String s = new String();
        if(ImagePart>0)
            s = getRealPart()+"+"+getImagePart()+"i";
        if(ImagePart==0)
            s = getRealPart()+"";
        if(ImagePart<0)
            s = getRealPart()+""+getImagePart()+"i";
        if(RealPart==0)
            s = getImagePart()+"i";
        if(ImagePart==0&&RealPart==0)
            s = "0";
        return s;
    }
    public Complex ComplexAdd(Complex a){
        Complex d = new Complex();
        d.RealPart = RealPart + a.RealPart;
        d.ImagePart = ImagePart + a.ImagePart;
        return d;
    }
    public Complex ComplexSub(Complex a){
        Complex d = new Complex();
        d.RealPart = RealPart - a.RealPart;
        d.ImagePart = ImagePart - a.ImagePart;
        return d;
    }
    public Complex ComplexMulti(Complex a){
        Complex d = new Complex();
        d.RealPart = RealPart*a.RealPart - ImagePart*a.ImagePart;
        d.ImagePart = RealPart*a.ImagePart + ImagePart*a.RealPart;
        return d;
    }
    public Complex ComplexDiv(Complex a) {
        Complex d = new Complex();
        d.RealPart = (RealPart * a.RealPart + ImagePart * a.ImagePart) / (a.RealPart * a.RealPart + a.ImagePart * a.ImagePart);
        d.ImagePart = (ImagePart * a.RealPart - RealPart * a.ImagePart) / (a.RealPart * a.RealPart + a.ImagePart * a.ImagePart);
        return d;
    }
}
  • 测试代码·:
import junit.framework.TestCase;

public class ComplexTest extends TestCase {

    Complex a = new Complex(7, 9);
    Complex b = new Complex(-2, -3);
    public void testEquals() {
        assertEquals(true, a.equals(a));
        assertEquals(false, b.equals(a));
    }
    public void testToString() {
        assertEquals("7+9i", a.toString());
        assertEquals("-2-3i", b.toString());
    }
    public void testComplexAdd() {
        assertEquals("5+6i",a.ComplexAdd(b).toString());
        assertEquals("-4-6i",b.ComplexAdd(b).toString());
    }
    public void testComplexSub() {
        assertEquals("9+12i",a.ComplexSub(b).toString());
        assertEquals("0",b.ComplexSub(b).toString());
    }
    public void testComplexMulti() {
        assertEquals("-32+126i",a.ComplexMulti(a).toString());
        assertEquals("13-39i",a.ComplexMulti(b).toString());
    }
    public void testComplexDiv() {
        assertEquals("1",a.ComplexDiv(a).toString());
    }
}
  • 测试结果:
    2018-2019-2 20175207 实验三《敏捷开发与XP实践》实验报告

  • 将代码推至搭档的仓库

    • VCS -> Check out from version control -> Git
      2018-2019-2 20175207 实验三《敏捷开发与XP实践》实验报告
    • 在URL中复制搭档的仓库HTTPS地址
      2018-2019-2 20175207 实验三《敏捷开发与XP实践》实验报告
    • 将代码推到搭档码云,操作如下:
      2018-2019-2 20175207 实验三《敏捷开发与XP实践》实验报告

2018-2019-2 20175207 实验三《敏捷开发与XP实践》实验报告
- 推送结果
2018-2019-2 20175207 实验三《敏捷开发与XP实践》实验报告

要求:完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。

  • 添加创建者信息

  • 给覆写方法加上@Override注解

  • 方法名,参数名,成员变量,局部变量都统一使用lowerCamelCase,遵从驼峰形式。
    2018-2019-2 20175207 实验三《敏捷开发与XP实践》实验报告

  • 回到顶端