20165235 实验三 敏捷开发与XP实践

Posted qy20165235

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20165235 实验三 敏捷开发与XP实践相关的知识,希望对你有一定的参考价值。

20165235 实验三 敏捷开发与XP实践

主目录:

  • 姓名:祁瑛
  • 学号:20165235
  • 班级:1652
  • 实验课程:JAVA程序设计
  • 实验名称:Java面向对象程序设计
  • 实验时间:2018.4.30
  • 指导老师:娄家鹏

敏捷开发与XP实践-1

任务1在IDEA中使用工具(Code->Reformate Code)

在IEDA的code菜单栏中有很多的工具,如下:

  1. surround with是自动将if-elsefor等语句进行包装起来。快捷键:Ctrl+Alt+T
  2. Insert Live Template是加入一些语句模板,快捷键: Ctrl+j
    3.Override Methods 重写基类的方法 ,快捷键: Ctrl+O
  3. Implement Methods 实现基类或接口中的方法,快捷键:Ctrl+I
  4. Override Methods… 重写基类的方法,快捷键:Ctrl+O
  5. Unwrap/Remove 去除相关的包装代码,快捷键:Ctrl+Shift+Delete
    点击上菜单栏code--->surround withif-else语句进行包装:
    技术分享图片
    技术分享图片
    点击上菜单栏code->Insert Live Template进行添加语句:
    技术分享图片

    代码的书写规范标准中很重要的一项是如何给包、类、变量、方法等标识符命名,能很好的命名可以让自己的代码立马上升一个档次。Java中的一般的命名规则有:
  • 要体现各自的含义
  • 包、类、变量用名词
  • 方法名用动宾
  • 包名全部小写,如:ioawt
  • 类名第一个字母要大写,如:HelloWorldApp
  • 变量名第一个字母要小写,如:userName
  • 方法名第一个字母要小写:setName

任务2 :下载alibaba插件解决代码规范问题

  • 对代码给定的代码并对代码进行编码规约扫描:
    技术分享图片
    对以上提出的没有使用{}if-else包装的问题通过code->surround with进行操作,结果图如下:
    技术分享图片

    [敏捷开发与XP实践-2]

    任务一:在unbuntu上下载搭档码云中的Complex代码并加入测试用例,然后git到搭档到码云。

    首先是clone搭档的码云代码:git clone [搭档码云链接],然后通过cd命令进入搭档代码目录改相应的文件,如本次实验的Complex.javaComplexTest.java,然后git add Complex.javagit add ComplexTest.java。之后git -a -m“20165235 相应的内容”如下图:
    技术分享图片

可以通过git status来查看当前的状态,之后git push就可以了,输入自己码云用户名和密码。结果如图:
技术分享图片

这个是我自己的命令行输入git log来查看自己的代码提交记录:
技术分享图片

这是我搭档电脑中的git log记录
技术分享图片

在搭档的码云中查看结果:
技术分享图片

选择push
技术分享图片

出现push successful说明git成功:
技术分享图片

[敏捷开发与XP实践-3]

代码规范对学习编程很重要,剔除代码中不规范的命名,程序bug等一系列的代码问题:
如下是我在我搭档的码云中下载的代码:

import java.util.*;
class A {
    void panDuan(long n) {
        long m = n;
        int i = 0;
        int flag = 1;
        int count = 0;
        long[] a;
        a = new long[10];
        while (n != 0) {
            a[count] = n % 10; 
            n /=  10;
            count++;//count计算的是n的位数
        }
        for ( i = 0; i < count / 2; i++) {
            if (a[i] != a[count - 1 - i]) { 
                System.out.printf("a[%d]≠a[%d]\\n",count-i-1,i);
                flag = 0;
                break;
            }
        }
        if (flag==1)
            System.out.println(m+"是回文数");
        else
            System.out.println(m+"不是回文数");
        }
}
public class HuiWen {

    public static void main(String[] args) {
        A a = new A();
        System.out.println("请输入一个数字:");
        Scanner reader = new Scanner(System.in); 
        long n = reader.nextLong();
        if(n>=999999999)
            System.exit(0); 
        else
        a.panDuan(n); 
    }
}


通过编码规范扫描,发现三处错误:

  1. 类名不符合命名规则
    2.没有对if-else进行包装
    3.方法不符合命名规则
    并对其进行重构:
    技术分享图片

Refactor->Extrac->Field对文件名(类名)进行修改,重构之后的代码:
技术分享图片
技术分享图片

  • 代码链接

    [敏捷开发与XP实践-4]

    以结队的方式进行java密码编程

    任务一

    在本次任务中我们选择了Caesar密码我进行了产品代码编写和测试用例代码编写,搭档对本次代码进行了调试和重构。如下是产品代码进行重构之后的截图:
    技术分享图片
    技术分享图片
    技术分享图片
    对本次代码重构了三项:
  • 修复了输入为非a-z字符的bug(返回error)
  • 类名不符合命名规则
  • 没有对if-else进行封装
    这是对产品代码进行的Junit测试:
    技术分享图片

-代码链接

[实验中遇到的问题以及解决方法]

  • 问题1:在IEDA中git clone搭档代码时缺少git.exe文件
  • 解决方式:首先进入官网下载---git.exe下载地址,然后打开setting搜索git,在path to git中设置git.exe的路径,然后点击ok。如图:
    技术分享图片

  • 问题2 :在合作完成Caeser密码时,出现边界问题:password是1,输入密文abc时结果为” ab“,加密也同样。
  • 解决方式:我参考了C语言编写的代码之后对加解密进行了改进:加密为:‘a‘+(c[i]-‘a‘+ password)%26 解密为:‘z‘-(‘z‘+password-c[i])%26 。这就很好的解决了边界值问题。

    [实验总结]

    本此实验是要求我们掌握代码重构,规范的代码才能使我们对代码内容一目了然,alibaba这款插件通过编码规范扫描,清楚的了解到自己的代码问题。在结队编程中使用git来修改搭档代码中的bug等问题(在修改之后一定要保证代码是可以运行的)。最后是通过java来实现密码算法,这次我选择了简单的Caeser密码,因为对其他密码算法了解的不够深,以后还得好好学习其他密码算法。

步骤 耗时 百分比
需求分析 20min 8%
设计 60min 25%
代码实现 120min 50%
测试 10min 4%
分析总结 30min 13%































以上是关于20165235 实验三 敏捷开发与XP实践的主要内容,如果未能解决你的问题,请参考以下文章

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

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

实验三 敏捷开发与XP实践

20165226 实验三 敏捷开发与XP实践

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

20155208实验三 敏捷开发与XP实践