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

    一、实验报告封面

    课程:Java程序设计 班级:1752 姓名:泽仁拉措 学号:20175235

    指导教师:娄嘉鹏 实验日期:2019年4月30日

    实验时间: 。 实验序号:实验三

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

    二、实验内容

    1. XP基础

    2. XP核心实践

    3. 相关工具

    三、实验要求

    1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程

    2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导

    1. 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。

    四、实验步骤

    1.①代码规范

    下载插件:通过Jetbrains官方仓库安装:打开Setting->Plugins->搜索框输入alibaba->下载即可

    ②编码规约扫描:在文件上点击右键找到即可

    不规范的地方,有中文提示并且定位到了行,alibaba把问题分为block/critical/major三个等级,有些规则可以一键修复。

    2.编码标准

    ①Java中的一般的命名规则有
    要体现各自的含义
    包、类、变量用名词
    方法名用动宾
    包名全部小写,如:io,awt
    类名第一个字母要大写,如:HelloWorldApp
    变量名第一个字母要小写,如:userName
    方法名第一个字母要小写:setName
    ②.作业1:把下面代码重新格式化,再研究一下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));
    }
    }
    

    ③·Ctrl+/或Ctrl+Shift+/`添加注释

    Ctrl+O重载基本类

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

    要体现各自的含义
    包、类、变量用名词
    方法名用动宾
    包名全部小写,如:io,awt
    类名第一个字母要大写,如:HelloWorldApp
    变量名第一个字母要小写,如:userName
    方法名第一个字母要小写:setName

    3.敏捷开发与XP

    在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后git add .; git commit -m "自己学号 添加内容";git push;
    提交搭档项目git log的截图,包含上面git commit的信息,并加上自己的学号水印信息
    ①搭档的代码:

    public class Complex {
        private double RealPart;//复数的实部
        private double ImagePart;//复数的虚部
        public Complex() {}
        public Complex(double a, double b) {
            setRealPart(a);
            setImagePart(b);
        }
        public void setRealPart(double a) {
            RealPart = a;
        }
        public void setImagePart(double b) {
            ImagePart = b;
        }
        public double getRealPart() {//返回复数的实部
            return RealPart;
        }
        public double getImagePart() {
            return ImagePart;
        }
        Complex ComplexAdd(Complex a) {//(a+bi)+(c+di)=(a+c)+(b+d)i
            Complex complex = new Complex();
            complex.RealPart = this.RealPart + a.RealPart;
            complex.ImagePart = this.ImagePart + a.ImagePart;
            return complex;
        }
        Complex ComplexSub(Complex a) {//(a+bi)-(c+di)=(a-c)+(b-d)i
            Complex complex=new Complex();
            complex.RealPart=this.RealPart-a.RealPart;
            complex.ImagePart=this.ImagePart-a.ImagePart;
            return complex;
        }
        Complex ComplexMulti(Complex a) {//(a+bi)*(c+di)=(ac-bd)+(ad+bc)i
            Complex complex =new Complex();
            complex.RealPart=this.RealPart*a.RealPart-this.ImagePart*a.ImagePart;
            complex.ImagePart=this.RealPart*a.ImagePart+this.ImagePart*a.RealPart;
            return complex;
        }
        Complex ComplexDiv(Complex a) {//(a+bi)/(c+di)=(a+bi)(c-di)/(c^2+d^2)
            Complex complex=new Complex();
            complex.RealPart=(this.RealPart*a.ImagePart+this.ImagePart*a.RealPart)/(a.ImagePart*a.ImagePart+a.RealPart*a.RealPart);
            complex.ImagePart=(this.ImagePart*a.ImagePart+this.RealPart*a.RealPart)/(a.ImagePart*a.ImagePart+a.RealPart*a.RealPart);
            return complex;
        }
        public String toString() {
            if (ImagePart==0) {
                String str = String.valueOf(RealPart);
                return str;
            }
            else if (RealPart==0) {
                String str = String.valueOf(ImagePart)+"i";
                return  str;
            }
            else {
                if (ImagePart>0) {
                    String str = String.valueOf(RealPart) + "+" + String.valueOf(ImagePart) + "i";
                    return str;
                }
                else {
                    String str = String.valueOf(RealPart) + String.valueOf(ImagePart) + "i";
                    return str;
                }
            }
        }
    }
    

    要测试的类有ComplexAddComplexSubComplexMultiComplexDiv
    ②测试代码如下

    ③然后将测试代码传到搭档的码云里,git log如下:

    4.重构

    ①要求:参考http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA
    完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。
    ②实验步骤
    重构的概念:
    重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。
    重构中一个非常关键的前提就是“不改变软件外部行为”,它保证了我们在重构原有系统的同时,不会为原系统带来新的BUG,以确保重构的安全。如何保证不改变软件外部行为?重构后的代码要能通过单元测试。如何使其更加易于阅读、易于维护和易于变更 ?设计模式给出了重构的目标。

    我们要修改软件,万变不离其宗,无非就是四种动机:
    增加新功能;
    原有功能有BUG;
    改善原有程序的结构;
    优化原有系统的性能 。

    第一种和第二种动机,都是源于客户的功能需求,而第四种是源于客户的非功能需求。软件的外部质量,其衡量的标准就是客户对软件功能需求与非功能需求的满意度。它涉及到一个企业、一个软件的信誉度与生命力,因此为所有软件企业所高度重视。要提高软件内部质量,毫无疑问就是软件修改的第三个动机:改善原有程序的结构。它的价值是隐性的,并不体现在某一次或两次开发中,而是逐渐体现在日后长期维护的软件过程中。

    而一个完整的重构流程包括:
    从版本控制系统代码库中Check out code
    读懂代码(包括测试代码)
    发现bad smell
    efactoring
    运行所有的Unit Tests
    往代码库中Check in code

    下面就是下载搭档的代码,至少进行三项重构:

    搭档的代码:

    重构1:重写toString时的@override标志

    重构2:添加作者和日期

    重构3:规范方法名(首字母小写)

    规范后的代码

    5.我的码云链接:

    https://gitee.com/drpkgj/Besti.Java/blob/master/TEST/ComplexTest.java

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

    密码学: 主要是研究保密通信和信息保密的学科, 包括信息保密传输和信息加密存储等。

    ①实验结果截图:

    五.实验总结:

    这次实验的大部分都是依靠实验二所学,重新复习实验二部分操作,刚在Windows上git才发现自己Windows既然没安装git,平时都用虚拟机,然后连忙又下载git。学习到了结对编程的有效工作率。

  • 相关阅读:
    SpringSource Tools Suite 字体偏小问题
    Ubuntu11.10 Eclipse 提示框 为黑色 解决方案
    图的广度优先搜索 皇星客栈
    哈夫曼编码 皇星客栈
    m_hWnd与this指针 皇星客栈
    建立中序线索二叉树 皇星客栈
    第一部分 整数Hash 皇星客栈
    哈夫曼树建立 皇星客栈
    Hash入门 皇星客栈
    stdin,stdout 和STDOUT_FILENO,STDIN_FILENO的学习 皇星客栈
  • 原文地址:https://www.cnblogs.com/Zrlc/p/10786817.html
Copyright © 2011-2022 走看看