2018-2019-20175322实验三敏捷开发与xp实践《java开发环境的熟悉》实验报告(代码片段)

zyh5322 zyh5322     2022-12-06     654

关键词:

2018-2019-20175322 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告

实验内容

  • 1.XP基础
  • 2.XP核心实践
  • 3.相关工具

实验要求

  • 1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程
  • 2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导
    1. 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。

实验步骤

(一)编码标准

  • Java中的一般的命名规则有:
    • 要体现各自的含义
    • 包、类、变量用名词
    • 方法名用动宾
    • 包名全部小写,如:io,awt
    • 类名第一个字母要大写,如:HelloWorldApp
    • 变量名第一个字母要小写,如:userName
    • 方法名第一个字母要小写:setName
    • ...
  • 安装alibaba插件
    • 打开Settings ->Plugins
    • 在搜索框输入alibaba即可看到Alibaba Java Code Guidelines插件,点击Install进行安装,然后重启IDE生效,安装完成后如图:
      技术图片

    • 在项目名称上单击右键,在弹出菜单上选择编码规约扫描,出现下图内容:
      技术图片

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

  • 代码问题:
    • 在if/else/for/while/do语句中必须使用大括号,即使只有一行代码,避免使用if(conditions)statement;
    • 所有的覆写方法,必须加@Override注解
    • Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals
    • 方法名,参数名,成员变量,局部变量都统一使用lowerCamelCase,必须遵循驼峰形式
    • 不允许任何魔法值(即未经定义的常量)直接出现在代码中
    • 所有的类都必须添加创建者信息
    • 方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释使用/* */注释。注意与代码对齐
    • 类、类属性、类方法的注释必须使用javadoc规范,使用/**内容/格式,不得使用//xxx方式和/xxx*/方式
    • 类名使用UpperCamelCase风格,必须遵从驼峰形式,但以下情形例外:(领域模型的相关命名)DO / BO / DTO / VO / DAO
  • 规范后的代码:
/**
 * CodeStandard
 * @author zyh20175322
 * @date 2019/5/2
 */
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());
        int n = 20;
        if (buffer.capacity() < n)
            buffer.append("1234567");
        

        for (int i = 0; i < buffer.length(); i++)
            System.out.println(buffer.charAt(i));
        

    
 - 规范后显示`No suspicious code found. 1 files processed in File...`表明未发现可疑代码,规范成功

技术图片

  • code菜单
    • 重写覆盖方法(Override Methods):Ctrl + O
      技术图片

    • 实现接口方法(Implements Methods):Ctrl + I
    • Gengrate:Alt + Insert
    • Surround With:Ctrl+Alt+T
    • 智能选择并实现(SmartType):Ctrl + Shift + 空格
    • 循环往上选择单词(Cyclic Expand Word):Alt + /
    • 循环往下选择单词 (Cyclic Expand Word)Alt + Shift + /
    • 方法展开 ( Expand) Ctrl + 加号
    • 方法折叠 (Collapse)Ctrl + 减号
    • 全部方法展开( Expand All )Ctrl + Shift + 加号
    • 全部方法折叠 ( Collapse All ) Ctrl + Shift + 减号
    • 展开Java doc注释 ( Expand doc comments )
    • 折叠Java doc注释 ( Collapse doc comments )
    • 行注释 (Comment with Line Comment )Ctrl + /
    • 块注释 ( Comment with Block Comment ) Ctrl + Shift + /
    • 格式化代码 (Reformat Code ) Ctrl + Alt + L
    • 弹出格式化弹框 ( Show Reformat File Dialog ) Ctrl + Alt + Shift + L
    • 重新整理代码 (Rearrange Code)

(二)Git中添加添加仓库成员及测试代码

  • 要求:
    • 在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后git add .; git commit -m "自己学号 添加内容";git push;
    • 提交搭档项目git log的截图,包含上面git commit的信息,并加上自己的学号水印信息
  • 步骤:
    • 打开码云,进入仓库,点击管理 -> 添加仓库成员 -> 邀请用户
      技术图片

    • 效果:
      技术图片

    • 搭档的Complex代码:

public class Complex     //a + bi
    private double a;
    private double b;

    public Complex()                      //构造方法,置0
        this.a = 0;
        this.b = 0;
    

    public Complex(double a, double b)   //构造方法,初始化一个复数
        this.a = a;
        this.b = b;
    

    public  double getA()                  //获取实部
        return this.a;
    
    public double getB()                  //获取虚部
        return this.b;
    

    public double setA(double a)         //设置实部
        this.a = a;
        return a;
    
    public double setB(double b)         //设置虚部
        this.b = b;
        return b;
    

    Complex ComplexAdd(Complex c)//复数相加
        double a = c.getA();
        double b = c.getB();
        double newA = a + this.a;
        double newB = b + this.b;
        Complex Result = new Complex(newA,newB);
        return Result;
    

    Complex ComplexMinus(Complex c)//复数相减
        double a = c.getA();
        double b = c.getB();
        double newA = a - this.a;
        double newB = b - this.b;
        Complex Result = new Complex(newA,newB);
        return Result;
    

    Complex ComplexMulti(Complex c)//复数相乘
        double a = c.getA();
        double b = c.getB();
        double newA = a * this.a;
        double newB = b * this.b;
        Complex Result = new Complex(newA,newB);
        return Result;
    

    Complex ComplexDiv(Complex c)//复数相乘
        double a = c.getA();
        double b = c.getB();
        double newA = a / this.a;
        double newB = b / this.b;
        Complex Result = new Complex(newA,newB);
        return Result;
    

    public String toString() 
        String s = " ";
        if (b > 0)
            s =  a + "+" + b + "i";
        if (b == 0)
            s =  a + "";
        if (b < 0)
            s = a + " " + b + "i";
        return s;
    
 - 搭档测试代码:
import junit.framework.TestCase;
import org.junit.Test;
import static org.junit.Assert.*;

public class ComplexTest extends TestCase 
    Complex c1 = new Complex(0, 3);
    Complex c2 = new Complex(-1, -1);
    Complex c3 = new Complex(2,1);
    @Test
    public void testgetRealPart() throws Exception 
        assertEquals(-1.0, new Complex().setA(-1.0));
        assertEquals(5.0, new Complex().setA(5.0));
        assertEquals(0.0, new Complex().setA(0.0));
    
    @Test
    public void testgetImagePart() throws Exception 
        assertEquals(-1.0, new Complex().setB(-1.0));
        assertEquals(5.0, new Complex().setB(5.0));
        assertEquals(0.0, new Complex().setB(0.0));
    
    @Test
    public void testComplexAdd() throws Exception 
        assertEquals("-1.0+2.0i", c1.ComplexAdd(c2).toString());
        assertEquals("2.0+4.0i", c1.ComplexAdd(c3).toString());
        assertEquals("1.0", c2.ComplexAdd(c3).toString());
    
    @Test
    public void testComplexSub() throws Exception 
        assertEquals("-1.0 -4.0i", c1.ComplexMinus(c2).toString());
        assertEquals("2.0 -2.0i", c1.ComplexMinus(c3).toString());
        assertEquals("3.0+2.0i", c2.ComplexMinus(c3).toString());
    
    @Test
    public void testComplexMulti() throws Exception 
        assertEquals("-0.0 -3.0i", c1.ComplexMulti(c2).toString());
        assertEquals("0.0+3.0i", c1.ComplexMulti(c3).toString());
        assertEquals("-2.0 -1.0i", c2.ComplexMulti(c3).toString());
    
    @Test
    public void testComplexComplexDiv() throws Exception 
        assertEquals("-0.0 -3.0i", c2.ComplexDiv(c1).toString());
        assertEquals("-0.0 -3.0i", c2.ComplexDiv(c1).toString());
        assertEquals("-2.0 -1.0i", c2.ComplexDiv(c3).toString());
    
 - 测试结果:

技术图片

(三)重构

  • 要求:完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接
  • 步骤:
    • 添加创建者信息
      技术图片

    • 给覆写方法加上@Override注解
      技术图片

    • 方法名,参数名,成员变量,局部变量都统一使用lowerCamelCase,遵从驼峰形式

    • 在if/else/for/while/do语句中必须使用大括号,即使只有一行代码
      技术图片

    • 规范结果:
      技术图片

码云链接

参考资料

201753122018-2019-2实验三敏捷开发与xp实践实验报告

201753122018-2019-2实验三敏捷开发与XP实践实验报告实验步骤与运行结果实验三敏捷开发与XP实践-1实验三敏捷开发与XP实践http://www.cnblogs.com/rocedu/p/4795776.html,Eclipse的内容替换成IDEA参考http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD安... 查看详情

2017-2018-220165331实验三《敏捷开发与xp实践》实验报告

实验三敏捷开发与XP实践实验报告封面课程:Java程序设计班级:1653姓名:胡麟学号:20165331成绩:指导教师:娄嘉鹏实验日期:2018.4.28实验密级:预习程度:实验时间:15:35-17:50仪器组次:必修/选修:实验序号:3实验名称:... 查看详情

2017-2018-220165327实验三《敏捷开发与xp实践》实验报告

2017-2018-220165327实验三《敏捷开发与XP实践》实验报告实验三《敏捷开发与XP实践》一、实验报告封面课程:Java程序设计班级:1653姓名:杨靖涛学号:20165327指导教师:娄嘉鹏实验日期:2018.4.28实验时间:15:35-17:50实验序号:三... 查看详情

实验三敏捷开发与xp实践(代码片段)

实验三《敏捷开发与XP实践》实验报告一.敏捷开发与XP实践-1①实验要求:敏捷开发与XP实践http://www.cnblogs.com/rocedu/p/4795776.html,Eclipse的内容替换成IDEA参考http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD安装alibaba插件,解决代码中的... 查看详情

2018-201920175232实验三《敏捷开发与xp实践》实验报告

实验三敏捷开发与XP实践-1实验三敏捷开发与XP实践http://www.cnblogs.com/rocedu/p/4795776.html,Eclipse的内容替换成IDEA参考http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD安装alibaba插件,解决代码中的规范问题。在IDEA中使用工具(Code->Refor... 查看详情

实验三敏捷开发与xp实践(代码片段)

实验三敏捷开发与XP实践课程:Java程序设计班级:1652姓名:孔月学号:20165208指导教师:娄嘉鹏实验日期:2018.4.28实验名称:敏捷开发与XP实践实验内容及要求:XP基础XP核心实践相关工具实验内容、步骤与体会目录:(一)在IDE... 查看详情

2018-2019-220175320实验三《敏捷开发与xp实践》实验报告(代码片段)

2018-2019-220175320实验三《敏捷开发与XP实践》实验报告一、实验步骤及内容软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。软件工程包括下列领域:软件需求分析、软件设计、软件构建、软... 查看详情

20165220实验三敏捷开发与xp实践实验报告(代码片段)

实验三敏捷开发与XP实践-1实验要求:实验三敏捷开发与XP实践http://www.cnblogs.com/rocedu/p/4795776.html,Eclipse的内容替换成IDEA参考http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD安装alibaba插件,解决代码中的规范问题。在IDEA中使用工具... 查看详情

2018-2019-520175304实验三《敏捷开发与xp实践》实验报告

2018-2019-520175304实验三《敏捷开发与XP实践》实验报告一、实验报告封面课程:Java程序设计班级:1753班姓名:刘朝尹学号:20175304指导教师:娄嘉鹏实验日期:2019年5月1日实验时间:13:45-15:25实验序号:实验三实验名称:敏捷开发... 查看详情

20175325《java程序设计》实验三《敏捷开发与xp实践》实验报告(代码片段)

20175325《JAVA程序设计》实验三《敏捷开发与XP实践》实验报告一、实验报告封面课程:Java程序设计班级:1753班姓名:石淦铭学号:20175325成绩:指导教师:娄嘉鹏实验日期:2019年5月2日实验时间:13:45-17:25实验序号:实验三实验... 查看详情

20165329实验三敏捷开发与xp实践(代码片段)

20165329实验三敏捷开发与XP实践一、敏捷开发与XP实践-1实验要求:在IDEA中使用工具(Code->ReformateCode)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能。提交截图,加上自己学号水印。publicclassCo... 查看详情

2017-2018-220165204实验三《敏捷开发与xp实践》实验报告

2017-2018-220165204实验三《Java面向对象程序设计》实验报告一、实验报告封面课程:Java程序设计班级:1652班姓名:贾普涵学号:20165204指导教师:娄嘉鹏实验日期:2018年4月27日实验时间:13:45-15:25实验序号:实验三实验名称:敏捷... 查看详情

20165235实验三敏捷开发与xp实践(代码片段)

20165235实验三敏捷开发与XP实践主目录:姓名:祁瑛学号:20165235班级:1652实验课程:JAVA程序设计实验名称:Java面向对象程序设计实验时间:2018.4.30指导老师:娄家鹏敏捷开发与XP实践-1任务1在IDEA中使用工具(Code->ReformateCode... 查看详情

2018-2019-220175303实验三敏捷开发与xp实践《java开发环境的熟悉》实验报告(代码片段)

2018-2019-220175303实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告实验报告封面课程:Java程序设计班级:1753姓名:柴轩达学号:20175303指导教师:娄嘉鹏实验日期:2019年4月29日-5月2日实验序号:3实验名称:敏捷开发与XP实... 查看详情

实验三《敏捷开发与xp实践》20155335俞昆

实验三实验三敏捷开发与XP实践实验内容1.XP基础2.XP核心实践3.相关工具实验要求1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》课程2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意... 查看详情

20165201实验三敏捷开发与xp实践(代码片段)

##20165201实验三敏捷开发与XP实践敏捷开发与XP实践-1实验目的与要求:http://www.cnblogs.com/rocedu/p/4795776.html,Eclipse的内容替换成IDEA参考http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD安装alibaba插件,解决代码中的规范问题。在IDEA中使... 查看详情

2017-2018-220165306实验三《敏捷开发与xp实践》实验报告(代码片段)

实验三《敏捷开发与XP实践》实验报告实验报告封面实验内容XP基础XP核心实践相关工具实验步骤(一)敏捷开发与XP实践-1实验要求:参考代码规范安装alibaba插件,解决代码中的规范问题。在IDEA中使用工具(Code->ReformateCode)... 查看详情

20175221曾祥杰实验三《敏捷开发与xp实践》(代码片段)

实验三《敏捷开发与XP实践》实验报告封面课程:Java程序设计班级:1752班姓名:曾祥杰学号:20175221指导教师:娄嘉鹏实验日期:2019年4月30日实验时间:13:45-15:25实验序号:21实验名称:敏捷开发与XP实践一.实验内容1.XP基础2.XP... 查看详情