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%
  • 相关阅读:
    129. Sum Root to Leaf Numbers
    113. Path Sum II
    114. Flatten Binary Tree to Linked List
    112. Path Sum
    100. Same Tree
    300. Longest Increasing Subsequence
    72. Edit Distance
    自定义js标签库
    JS 实现Table相同行的单元格自动合并示例代码
    mysql 高版本only_full_group_by 错误
  • 原文地址:https://www.cnblogs.com/brs666/p/8966779.html
Copyright © 2011-2022 走看看