zoukankan      html  css  js  c++  java
  • 2018-2019-2 20175230 实验三《Java面向对象程序设计》实验报告

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

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

    实验要求

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

    实验步骤

    (一) 编码标准

    • 安装alibaba 插件,解决代码中的规范问题。具体流程如下:
      1.打开Settings ->Plugins->Marketplace,然后在搜素栏输入alibaba,即可看到Alibaba Java Code Guidelines插件,点击Install进行安装,然后重启IDE生效:

      2.使用比较简单:在项目名称上单击右键,在弹出菜单上选择编码规约扫描

    • 任务一:在IDEA中使用工具(Code->Reformate Code)格式化代码,并学习Code菜单的功能
      IDEA中的Code菜单如下:

    几个比较常用的功能

    • Override Methods(Ctrl+O):重载基本类的方法;
    • Implement Methods(Ctrl+I):完成当前类 implements 的(或者抽象基本类的)接口的方法;
    • Generate(Alt+Insert):创建类里面任何字段的 getter 与 setter 方法;
    • Surround With(Ctrl+Alt+T):使用if-else、try-catch、do-while等包装代码段;
    • Insert Live Template(Ctrl-J):执行一些记不起来的 Live Template 缩写;
    • Comment with Line Comment(Ctrl+斜杠)/Comment with Block Comment(Ctrl+Shift+斜杠):用 Ctrl+斜杠 与 Ctrl-Shift-/ 来注释(或反注释)代码行与代码块。 用Ctrl+斜杠单行注释标记(“ //… ”)来注释(或反注释)当前行或者选择地代码块。而 Ctrl+Shift+斜杠则可以用块注释标记(“ /* */”)把所选块包围起来。要反注释一个代码块就在块中任何一个地方按 Ctrl+Shift+斜杠 即可;
    • Reformat Code(Ctrl+Alt+L):将代码按标准格式缩进;
    • show reformat file dialog:按照格式自动对齐
    • Optimize imports:可以优化imports,去除不必要的imports
    • Move Line/statement Down/Up:将某行、表达式向下、向上移动一行

    (二)敏捷开发与XP

    任务二 :下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例
    需要测试的方法有:ComplexAdd(),ComplexSub(),ComplexMulti(),ComplexDiv();
    编写测试代码并上传到搭档码云项目上:

    import org.junit.Test;
    import junit.framework.TestCase;
    public class ComplexTest extends TestCase {
        Complex c1 = new Complex(1, 3);
        Complex c2 = new Complex(-2, -1);
        Complex c3 = new Complex(2,3);
        @Test
        public void testgetshibu() throws Exception {
            assertEquals(-2.0, Complex.getshibu(-2.0));
            assertEquals(6.0, Complex.getshibu(6.0));
            assertEquals(0.0, Complex.getshibu(0.0));
        }
        @Test
        public void testgetxubu() throws Exception {
            assertEquals(-2.0, Complex.getxubu(-2.0));
            assertEquals(6.0, Complex.getxubu(6.0));
            assertEquals(0.0, Complex.getxubu(0.0));
        }
        @Test
        public void testComplexAdd() throws Exception {
            assertEquals("-1.0+2.0i", c1.ComplexAdd(c2).toString());
            assertEquals("3.0+6.0i", c1.ComplexAdd(c3).toString());
            assertEquals("0.0+2.0i", c2.ComplexAdd(c3).toString());
        }
        @Test
        public void testComplexSub() throws Exception {
            assertEquals("3.0+4.0i", c1.ComplexSub(c2).toString());
            assertEquals("-1.0", c1.ComplexSub(c3).toString());
            assertEquals("-4.0 -4.0i", c2.ComplexSub(c3).toString());
        }
        @Test
        public void testComplexMulti() throws Exception {
            assertEquals("1.0 -7.0i", c1.ComplexMulti(c2).toString());
            assertEquals("-7.0+9.0i", c1.ComplexMulti(c3).toString());
            assertEquals("-1.0 -8.0i", c2.ComplexMulti(c3).toString());
        }
        @Test
        public void testComplexComplexDiv() throws Exception {
            assertEquals("-1.4 -1.0i", c1.ComplexDiv(c2).toString());
            assertEquals("0.6+0.8i", c1.ComplexDiv(c3).toString());
            assertEquals("-0.6 -0.6i", c2.ComplexDiv(c3).toString());
        }
    }
    

    (三)敏捷开发与XP

    重构
    我们先看看重构的概念:
    重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。
    重构中一个非常关键的前提就是“不改变软件外部行为”,它保证了我们在重构原有系统的同时,不会为原系统带来新的BUG,以确保重构的安全。如何保
    证不改变软件外部行为?重构后的代码要能通过单元测试。如何使其更加易于阅读、易于维护和易于变更 ?设计模式给出了重构的目标。
    (1)重构有关知识:
    -重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。

    -修改软件的四种动机:
    ①增加新功能;
    ②原有功能有BUG;
    ③改善原有程序的结构;
    ④优化原有系统的性能 。

    -需要重构的地方:
    ①代码重复;
    ②方法过长;
    ③参数列过长;
    ④条件逻辑过度复杂;
    ⑤分支语句。

    -一个完整的重构流程包括
    ①从版本控制系统代码库中Check out code;
    ②读懂代码(包括测试代码);
    ③发现bad smell;
    ④Refactoring;
    ⑤运行所有的Unit Tests;
    ⑥往代码库中Check in code。
    任务三:完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接

    • 存在问题:

    1.包名应为全部小写字母和数字组成
    2.所有的类都必须添加创建者信息
    3.类、类属性、类方法必须用javadoc规范
    4.方法名、参数名、成员变量、局部变量没有遵从驼峰形式

    实验体会

    本次实验做的比较顺利,主要问题是不够熟练,必须借助于各种资料,然后经过多次尝试才能做完。
  • 相关阅读:
    从底层来看Promise
    Promise初探
    时间复杂度和空间复杂度
    IDEA maven Run Maven 启动方式
    IDEA 运行maven工程报错:No goals have been specified for this build.....解决办法
    12.外键约束
    11.约束的概念及分类
    10.创建表-备注与创建表的细节说明。
    9.创建表-自增长(AUTO_INCREAMENT)
    8.创建表--主键的概念与应用
  • 原文地址:https://www.cnblogs.com/tengxing/p/10771282.html
Copyright © 2011-2022 走看看