实验三 敏捷开发与XP实践

实验三 《敏捷开发与XP实践》实验报告

一.敏捷开发与XP实践-1

①实验要求:

敏捷开发与XP实践 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菜单,找出一项让自己感觉最好用的功能。提交截图,加上自己学号水印。

②实验代码:

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

产品代码:
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));
}
}

运行截图:

修改前:实验三 敏捷开发与XP实践

修改后:实验三 敏捷开发与XP实践

实验三 敏捷开发与XP实践

二.敏捷开发与XP实践-2

①实验要求:

在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后git add .; git commit -m "自己学号 添加内容";git push;

提交搭档项目git log的截图,包含上面git commit的信息,并加上自己的学号水印信息。

②实验代码:

1.搭档码云链接:https://gitee.com/pyc-1751/chapter_1_of_java.git

2.产品代码:

public class Complex {
// 定义属性并生成getter,setter
double RealPart;
double ImagePart;

// 定义构造函数
public Complex(){
}
public Complex(double R,double I){
    RealPart=R;
    ImagePart=I;
}

//Override Object
public boolean equals(Complex m){
    if(m.RealPart==this.RealPart&&m.ImagePart==this.ImagePart){
        return true;
    }
    else{
        return false;
    }
}
public String toString(){
    if (this.RealPart != 0 && this.ImagePart > 0) {
        return this.RealPart + " + " + this.ImagePart + "i";
    } else if (this.RealPart != 0 && this.ImagePart == 0) {
        return String.valueOf(this.RealPart);
    } else if (this.RealPart != 0 && this.ImagePart < 0) {
        return this.RealPart + " - " + -this.ImagePart + "i";
    } else if (this.RealPart == 0 && this.ImagePart != 0) {
        return this.ImagePart + "i";
    } else {
        return "0";
    }
}

// 定义公有方法:加减乘除
Complex ComplexAdd(Complex a){
    return new Complex(this.RealPart + a.RealPart, this.ImagePart + a.ImagePart);
}
Complex ComplexSub(Complex a){
    return new Complex(this.RealPart - a.RealPart, this.ImagePart - a.ImagePart);
}
Complex ComplexMulti(Complex a){
    return new Complex(this.RealPart * a.RealPart - this.ImagePart * a.ImagePart,
            this.ImagePart * a.RealPart + this.RealPart * a.ImagePart);
}
Complex ComplexDiv(Complex a){
    return new Complex((this.ImagePart * a.ImagePart + this.RealPart * a.RealPart) / (a.ImagePart * a.ImagePart + a.RealPart * a.RealPart),
            (this.RealPart * a.ImagePart - this.ImagePart * a.RealPart) / (a.ImagePart * a.ImagePart + a.RealPart * a.RealPart));
}

}

测试代码:
import junit.framework.TestCase;
public class ComplexTest extends TestCase {
Complex a = new Complex(1, 5);
Complex b = new Complex(2, -3);

public void testEquals() {
    assertEquals(true, a.equals(a));
    assertEquals(false, b.equals(a));
}

public void testToString() {
    assertEquals("1.0 + 5.0i", a.toString());
    assertEquals("2.0 - 3.0i", b.toString());
}

public void testComplexAdd() {
    assertEquals("3.0 + 2.0i",a.ComplexAdd(b).toString());
    assertEquals("4.0 - 6.0i",b.ComplexAdd(b).toString());
}

public void testComplexSub() {
    assertEquals("-1.0 + 8.0i",a.ComplexSub(b).toString());
    assertEquals("0",b.ComplexSub(b).toString());
}

public void testComplexMulti() {
    assertEquals("-24.0 + 10.0i",a.ComplexMulti(a).toString());
    assertEquals("17.0 + 7.0i",a.ComplexMulti(b).toString());
}

public void testComplexDiv() {
    assertEquals("1.0",a.ComplexDiv(a).toString());
}

}

3.运行截图:

测试成功:实验三 敏捷开发与XP实践

上传至搭档的码云:
实验三 敏捷开发与XP实践

实验三 敏捷开发与XP实践

实验三 敏捷开发与XP实践

三.敏捷开发与XP实践-3

①实验要求:
敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA

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

②实验代码:

1.搭档码云链接:https://gitee.com/pyc-1751/chapter_1_of_java.git

2.实验截图
实验三 敏捷开发与XP实践

四.关于安装,使用alibaba 插件规范代码

实验三 敏捷开发与XP实践

下载完成后重启IDEA就可以编码规约扫描了

实验三 敏捷开发与XP实践

五.遇到的问题和解决方法

1.关于git log

git log功能只能看在本机上传(或同步)的commit日志。在本次实验的第二项中,我们起初以为一个人上传以后,两个人都能用git log看见码云的commit日志,实际上只有上传者能看见。

2.关于IDEA的重构

IDEA 重构快捷键:

重命名文件、方法、属性等(rename):SHIFT+F6
提取当前选择为变量(extract variable):CTRL+ALT+V
提取当前选择为属性(extract field):CTRL+ALT+F
提取当前选择为常量(extract constant):CTRL+ALT+C
提取当前选择为方法(extract method):CTRL+ALT+M
提取当前选择为方法参数(extract parameter):CTRL+ALT+P
重构类、方法(change signarture):CTRL+F6
提取代码块至if、try等结构中(surround with):CTRL+ALT+T
创建模块文件等(new):CTRL+ALT+N
创建测试用例(test):CTRL+SHIFT+T
重构菜单(refactor for this):CTRL+T

六.实验总结和感想

经过这次实验,了解并学习了代码标准,Eclipse的重构(拓展IDEA的重构),了解敏捷开发与XP。这次实验告诉我,在结束编码后需要一段时间,用来检查、规范自己的代码。好看的代码自己读着也舒心。这次试验需要结对伙伴的仓库,所以学习效率也有所提高。

上一篇:2018-2019-5 20175304实验三《敏捷开发与XP实践》实验报告


下一篇:xp产品密钥