zoukankan      html  css  js  c++  java
  • 实验三 敏捷开发与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实践-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实践-3

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

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

    ②实验代码:

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

    2.实验截图

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

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

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

    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。这次实验告诉我,在结束编码后需要一段时间,用来检查、规范自己的代码。好看的代码自己读着也舒心。这次试验需要结对伙伴的仓库,所以学习效率也有所提高。

  • 相关阅读:
    2016.10.15先占坑
    2016.10.11先占坑
    2016.10.13先占坑
    2016.10.7先占坑
    main()里面为什么要放String[] args
    对于一个给定的正整数 n ,请你找出一共有多少种方式使 n 表示为若干个连续正整数的和,要求至少包括两个正整数。
    求两个数的最大公约数的三种算法总结
    C++
    Dev-c5.11的使用
    客户端和服务器端的交互(未完待续)
  • 原文地址:https://www.cnblogs.com/WZL-DM/p/10779508.html
Copyright © 2011-2022 走看看