zoukankan      html  css  js  c++  java
  • 2017-2018-2 20165206 实验三 《敏捷开发与XP实践》实验报告

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

    一、实验报告封面

    课程:Java程序设计 班级:1652班

    姓名:韩啸 学号:20165206

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

    实验时间:15:35 - 17:15 实验序号:三

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

    二、实验内容

    - 敏捷开发与XP实践-1

    1. 实验要求:

    参考 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));
    }
    }
    
    1. 实验过程:

    编写代码一个重要的认识是“程序大多时候是给人看的”,编程标准使代码更容易阅读和理解,甚至可以保证其中的错误更少。

    编码版式虽然不会影响程序的功能,但会影响可读性。程序的版式追求清晰、美观,是程序风格的重要因素。

    我们可以在Idea中下载Alibaba Java Code Guidelines插件来让我们的编写更加优雅。

    我们可以通过Jetbrains官方仓库来安装:打开 Settings ->Plugins -> Browse repositories...

    在搜索框输入alibaba即可看到Alibaba Java Code Guidelines插件,点击Install进行安装,然后重启IDEA即可生效。

    在Code中可以将代码格式化。格式化前代码是这样的:

    格式化后是这样的:

    Code中的功能不止于此,Override Methods、Implement Methods、Surround With等。我认为最好用的是Surround With这个功能,它能使用if-else、for、do-while等来修饰代码。

    - 敏捷开发与XP实践-2

    1. 实验要求:

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

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

    1. 实验过程:

    搭档的Complex是这样的:

    可以进行单元测试的方法有ComplexAdd()、ComplexSub()、ComplexMulti()、ComplexDiv()。

    进行单元测试的运行截图为:

    将代码上传码云的截图为:

    - 敏捷开发与XP实践-3

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

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

    1. 实验过程:
      重构(Refactor),是指在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。
      其实说简单些就是在不改变程序本质的基础上,让程序更加的规范化。
      在Idea中有一个功能菜单就是用来重构的:

    我下载搭档的代码为:

    这段代码如果不进行修改同样可以运行,只是缺乏规范性。
    其中的问题有:类名不符合编码标准、定义的变量过多、判断语句过长。

    重构之后为:

    - 敏捷开发与XP实践-4

    1. 实验要求:

    参考 http://www.cnblogs.com/rocedu/p/6683948.html,以结对的方式完成Java密码学相关内容的学习,结合重构,git,代码标准。

    提交学习成果码云链接和代表性成果截图,要有学号水印。

    1. 实验过程:

    我和搭档进行的是凯撒密码的实现。凯撒密码的加密和解密算法相当来说比较简单。
    其加密过程如下:

    若明文记为m,密文记为c,秘钥为k,加密变换记为Encrypt(k,m),解密变换记为Decrypt(k,m))。凯撒密码的加密过程可记为如下一个变换:

    c≡m+k mod n (其中n为基本字符个数)

    同样,解密过程可表示为:
    m≡c+k mod n (其中n为基本字符个数)

    我们的加密代码为

    import java.util.Scanner;
    
    public class Test {
        public static void main(String[] args) {
            System.out.print("请输入明文:");
            Scanner a=new Scanner(System.in);
            String b=a.nextLine();
            System.out.print("请输入秘钥:");
            Scanner c=new Scanner(System.in);
            int key=c.nextInt();
            Encrypt(b, key);
        }
    
        public static void Encrypt(String str,int k){
            String s="";
            for (int i = 0; i < str.length(); i++) {
                char c=str.charAt(i);
                if(c>='a'&&c<='z'){
                    c+=k%26;
                    if(c<'a')
                        c+=26;
                    if(c>'z')
                        c-=26;
    
                }else if(c>='A'&&c<='Z'){
                    c+=k%26;
                    if(c<'A')
                        c+=26;
                    if(c>'Z')
                        c-=26;
                }
                s+=c;
            }
            System.out.println(str+" 加密为: "+s);
        }
    }
    

    解密代码为:

    import java.util.Scanner;
    
    public class Test2 {
        public static void main(String[] args) {
            System.out.print("请输入密文:");
            Scanner a=new Scanner(System.in);
            String b=a.nextLine();
            System.out.print("请输入秘钥:");
            Scanner c=new Scanner(System.in);
            int key=c.nextInt();
            Decrypt(b, key);
        }
    
        public static void Decrypt(String str,int k){
            String s="";
            for (int i = 0; i < str.length(); i++) {
                char c=str.charAt(i);
                if(c>='a'&&c<='z'){
                    c-=k%26;
                    if(c<'a')
                        c+=26;
                    if(c>'z')
                        c-=26;
    
                }else if(c>='A'&&c<='Z'){
                    c-=k%26;
                    if(c<'A')
                        c+=26;
                    if(c>'Z')
                        c-=26;
                }
                s+=c;
            }
            System.out.println(str+" 解密为: "+s);
        }
    }
    

    码云链接

    运行截图:

    三、实验感悟

    这次实验涉及的主要是重构以及与搭档合作完成任务。通过学习与实验,发现了以前一些代码书写不规范的地方,同时,也在与搭档合作的过程中学习到了许多东西,收获很大。

    PSP

    步骤 耗时 百分比
    需求分析 5 10%
    设计 5 10%
    代码实现 20 40%
    测试 5 10%
    分析总结 15 30%
  • 相关阅读:
    行转列,列转行
    聚合函数:sum,count,max,avg
    row_number() over partition by 分组聚合
    mysql优化
    hive中not in优化
    DBCP数据库连接池的简单使用
    Eclipse或MyEclipse中给第三方jar包添加源码步骤
    Java中CountDownLatch类的使用
    PLSQL Developer安装、配置、连接oracle数据库
    oracle11g卸载(win10)
  • 原文地址:https://www.cnblogs.com/brs666/p/8966779.html
Copyright © 2011-2022 走看看