zoukankan      html  css  js  c++  java
  • 20169205实验三 敏捷开发与XP实践

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

    实验内容及步骤

    (一)敏捷开发与XP基本知识

    敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。
    一项实践在XP环境中成功使用的依据通过XP的法则呈现,包括:快速反馈、假设简单性、递增更改、提倡更改、优质工作。
    敏捷开发包括很多模式,其中,极限编程(eXtreme Programming,XP)是一种全新而快捷的软件开发方法。XP团队使用现场客户、特殊计划方法和持续测试来提供快速的反馈和全面的交流:
    XP是以开发符合客户需要的软件为目标而产生的一种方法论
    XP是一种以实践为基础的软件工程过程和思想
    XP认为代码质量的重要程度超出人们一般所认为的程度
    XP特别适合于小型的有责任心的、自觉自励的团队开发需求不确定或者迅速变化的软件

    (二)编码标准

    代码标准中很重要的一项是如何给包、类、变量、方法等标识符命名,能很好的命名可以让自己的代码立马上升一个档次。Java中的一般的命名规则有:要体现各自的含义
    包、类、变量用名词
    方法名用动宾
    包名全部小写,如:io,awt
    类名第一个字母要大写,如:HelloWorldApp
    变量名第一个字母要小写,如:userName
    方法名第一个字母要小写:setName

    Eclipse菜单下的source->Format可以按Eclipse规定的规范缩进

    为了更加有层次感和规范性,根据代码逻辑加入一些空行

    (三)结对编程

    共同学习代码。
    编写了一个日历小程序。

    其中,我负责编写日历具体实现代码,另一位同学负责编写界面。
    其中CalenderFrame.java类是界面由同伴编写
    CalenderBean.java类和CalendarMainClass.java由我编写其中最主要的功能是闰年的判断,代码如下:

    ublic String[] getCalendar()
        {
            String a[]=new String[42];
            Calendar date=Calendar.getInstance();
            date.set(year,month-1,1);
            int week=date.get(Calendar.DAY_OF_WEEK)-1;
            int day=0;
    
            //判断大月份
            if(month==1||month==3||month==5||month==7
                    ||month==8||month==10||month==12)
            {
                day=31;
            }
    
            //判断小月
            if(month==4||month==6||month==9||month==11)
            {
                day=30;
            }
    
            //判断平年与闰年
            if(month==2)
            {
                if(((year%4==0)&&(year%100!=0))||(year%400==0))
                {
                    day=29;
                }
    
                else
                {
                    day=28;
                }
            }
    
            for(int i=week,n=1;i<week+day;i++)
            {
                a[i]=String.valueOf(n) ;
                n++;
            }
            return a;
        }
    

    (四)下载搭档的Complex类并编写测试

    (五) 重构代码

    重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更。

    public boolean isLeap(int year) {
      return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
    }
     
    public static int getMonthDays(int year, int month) {
      int numberDays = 0;
     
      switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
          numberDays = 31;
          break;
     
        case 4:
        case 6:
        case 9:
        case 11:
          numberDays = 30;
          break;
     
        case 2:
          numberDays = isLeap(year) ? 29 : 28;
          break;
      }
     
      return numberDays;
    }
    

    搭档这段代码使用了switch语句,然而这种写法在重构中是不推荐使用的具体改动如下
    重构后

    public boolean isLeap(int year) {
      return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
    }
     
    private int getFebruaryDays(int year) {
      return this.isLeap(year) ? 29 : 28;
    }
     
    public int getMonthDays(int year, int month) {
      int[] months = new int[] { 31, this.getFebruaryDays(year), 31, 30, 31, 30,
    31, 31, 30, 31, 30, 31 };
     
      return months[month];
    }
    
    

    截图如下

    实验中的问题和解决过程

    java的重构模式都有哪些?

    解决

    重命名方法重构模式、引入解释性变量重构模式、以查询取代临时变量重构模式
    重命名方法重构模式建议执行如下的步骤来完成:
    1.建立一个具有新名称的方法
    2.将旧方法的方法体复制进新方法
    3.讲旧方法的方法体修改为调用新方法
    4.将所有引用旧方法的地方修改为引用新方法
    5.删除旧方法
    引入解释性变量重构模式步骤相对简单,如下:
    1.声明一个局部变量,并将其初始化为需要替换的表达式部分
    2.对于复杂的表达式,用新的局部变量代替其中需要替换的部分
    3.对于该表达式的其他部分,重复这个过程
    以查询取代临时变量重构模式的步骤如下:
    1.找出只赋值了一次的局部变量
    2.将该局部变量声明为final并重新编译(以确保该变量的确只赋值了一次)
    3.复制赋值语句的等号右侧的表达式,并将其修改为一个新方法的方法体
    4.将赋值语句的等号右侧更改为对新方法的调用
    5.将所有对该局部变量的使用替换为对新方法的调用
    6.删除赋值语句以及局部变量的声明

    作业项目地址

    码云项目地址

    代码托管

    安卓项目地址

    项目地址

    实验总结

    步骤 耗时 百分比
    需求分析 20min 13.8%
    设计 30min 20.7%
    代码实现 60min 41.4%
    测试 15min 10.3%
    总结分析 20min 13.8%

    感想

    希望能够通过系统地学习,探索一些开源项目并改进功能,养成良好的开发习惯,形成一套完整的android生态知识体系,并能完全自主开发一款具有一定实用价值的app。

  • 相关阅读:
    归并排序
    快速排序
    希尔排序
    插入排序
    选择排序
    冒泡排序
    排序算法
    Win10 家庭版升级到专业版报错
    WPF 原生Style
    在线图片转换
  • 原文地址:https://www.cnblogs.com/wule/p/6773159.html
Copyright © 2011-2022 走看看