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

时间:2019-04-28 00:43:39   收藏:0   阅读:155

一、实验报告封面

课程:Java程序设计 班级:1653班 姓名:孙晓暄 学号:20165318

指导教师:娄嘉鹏 实验日期:2018年4月27日

实验时间:13:45 - 3:25 实验序号:实验三

实验名称:敏捷开发与XP实践

实验内容:

实验要求:

二、实验内容及步骤

(一)编码标准

安装alibaba 插件,解决代码中的规范问题。具体流程如下:

1.打开 Settings -> Plugins ,在搜索框输入alibaba即可看到Alibaba Java Code Guidelines插件,点击Install进行安装,然后重启IDE生效:
技术分享图片
2.使用比较简单:在项目名称上单击右键,在弹出菜单上选择编码规约扫描:
技术分享图片
出现下图内容:
技术分享图片
不规范的地方,有中文提示并且定位到了行,alibaba把问题分为block/critical/major三个等级,有些规则可以一键修复。

Java中的一般的命名规则有:

规范后的代码格式

import java.util.concurrent.Callable;

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

任务一:在IDEA中使用工具(Code->Reformate Code)格式化代码,并学习Code菜单的功能

IDEA中的Code菜单如下:
技术分享图片

几个比较常用的功能总结如下:

技术分享图片

(二)敏捷开发与XP

任务二:下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例

搭档的Complex代码如下:
技术分享图片

需要测试的方法有:ComplexAdd(),ComplexSub(),ComplexMulti(),ComplexDiv()
编写测试代码并上传到搭档码云项目上:

import junit.framework.TestCase;
import org.junit.Test;

import static org.junit.Assert.*;

public class ComplexTest extends TestCase {
    Complex c1 = new Complex(0.0, 2.0);
    Complex c2 = new Complex(-1.0, -1.0);
    Complex c3 = new Complex(1.0,2.0);
    @Test
    public void testgetRealpart() throws Exception{
        assertEquals(0.0,Complex.getRealPart(0.0));
        assertEquals(-1.0,Complex.getRealPart(-1.0));
        assertEquals(1.0,Complex.getRealPart(1.0));
    }
    @Test
    public void testgetImagePart() throws Exception{
        assertEquals(2.0,Complex.getImagePart(2.0));
        assertEquals(-1.0,Complex.getImagePart(-1.0));
        assertEquals(2.0,Complex.getImagePart(2.0));
    }
    @Test
    public void testComplexAdd() throws Exception{
        assertEquals("-1.0+1.0i",c1.ComplexAdd(c2).toString());
        assertEquals("1.0+4.0i",c1.ComplexAdd(c3).toString());
        assertEquals("0.0+1.0i",c2.ComplexAdd(c3).toString());
    }
    @Test
    public void testComplexSub() throws Exception{
        assertEquals("1.0+3.0i",c1.ComplexSub(c2).toString());
        assertEquals("-1.0",c1.ComplexSub(c3).toString());
        assertEquals("-2.0-3.0i",c2.ComplexSub(c3).toString());
    }
    @Test
    public void testComplexMulti() throws Exception{
        assertEquals("2.0-2.0i",c1.ComplexMulti(c2).toString());
        assertEquals("-4.0+2.0i",c1.ComplexMulti(c3).toString());
        assertEquals("1.0-3.0i",c2.ComplexMulti(c3).toString());
    }

    @Test
    public void testComplexDiv() throws Exception{
        assertEquals("-1.0-1.0i",c1.ComplexDiv(c2).toString());
        assertEquals("0.4+0.8i",c1.ComplexDiv(c3).toString());
        assertEquals("-0.6-0.6i",c2.ComplexDiv(c3).toString());
    }
}

技术分享图片
技术分享图片

(三)重构

重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。

我们要修改软件,万变不离其宗,无非就是四种动机:

需要重构的地方:
代码重复、方法过长、参数列过长、条件逻辑过度复杂、分支语句
技术分享图片

一个完整的重构流程包括:

任务三:下载搭档的代码,至少进行三项重构

技术分享图片

如上代码存在以下几个问题:

程序修改入下:
技术分享图片

(四)实验体会与总结

通过本次实验,我主要学习到了代码标准,代码重构等内容。

代码标准和重构的学习,使我注意到自己之前编写代码时的很多不规范之处,而且通过使用alibaba的实时编码扫描,使我在编写代码的同时,注意规范代码的标准格式,使写出的代码更加明了可观,类名和变量名的规范,也使我在编写代码时,减少了许多不必要的注释

代码托管

我的码云地址
搭档的码云地址

参考资料

Java 密码学算法——娄老师的博客
实验三 敏捷开发与XP实践——娄老师的博客
Java代码重构的几种模式详解
java 代码重构(系列讲解)
IntelliJ IDEA使用技巧一览表

原文:https://www.cnblogs.com/L1079991001/p/10781103.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!