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。

20169205实验三 敏捷开发与XP实践的更多相关文章

  1. 20145213《Java程序设计》实验三敏捷开发与XP实践

    20145213<Java程序设计>实验三敏捷开发与XP实践 实验要求 1.XP基础 2.XP核心实践 3.相关工具 实验内容 1.敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法 ...

  2. 20145308刘昊阳 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    20145308刘昊阳 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...

  3. JAVA课程实验报告 实验三 敏捷开发与XP实践

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉 ...

  4. 20145225《Java程序设计》 实验三 "敏捷开发与XP实践"

    20145225<Java程序设计> 实验三 "敏捷开发与XP实践" 实验报告 实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 git 上 ...

  5. 20145215实验三 敏捷开发与XP实践

    20145215实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软 ...

  6. 20145325张梓靖 实验三 "敏捷开发与XP实践"

    20145325张梓靖 实验三 "敏捷开发与XP实践" 程序设计过程 实验内容 使用 git 上传代码 git上传中遇到的问题 使用 git 相互更改代码 实现代码的重构 git ...

  7. 20162311 实验三 敏捷开发与XP实践 实验报告

    20162311 实验三 敏捷开发与XP实践 实验报告 实验内容 一.研究学习IDEA中的Code菜单 使用Code ->Reformate Code功能将以下代码格式化 public clas ...

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

    2018-2019-20175205 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>&l ...

  9. 20175314 实验三 敏捷开发与XP实践

    20175314 实验二 Java面向对象程序设计 一.实验内容 XP基础 XP核心实践 相关工具 二.实验步骤 (一)代码格式化 创建"175314.exp3"项目,在该项目下创 ...

随机推荐

  1. asm335x系列adc和触摸屏驱动(转)

    An analog-to-digital converter (abbreviated ADC) is a device that uses sampling to convert a continu ...

  2. LOJ 6485 LJJ 学二项式定理——单位根反演

    题目:https://loj.ac/problem/6485 \( \sum\limits_{k=0}^{3}\sum\limits_{i=0}^{n}C_{n}^{i}s^{i}a_{k}[4|(i ...

  3. java微信 客服接口-发消息 中文乱码

    /** * 向指定 URL 发送POST方法的请求 * * @param url *            发送请求的 URL * @param param *            请求参数,请求参 ...

  4. 【路由达人】简单两步搞定小米路由新增功能-DDNS(解析域名地址转向在线工具)

    DDNS(Dynamic Domain Name Server)是动态域名服务的缩写! 简单来说目前ISP大多为我们提供动态IP(如ADSL拨号上网),而很多设备或服务需要通过远程访问时需要一个固定的 ...

  5. 马士兵Spring-hibernate整合

    spring整合hibernate: 1.sessionFactory只需要一个就可以了,单例,适合spring管理: 2.HIbernate中的SessionFactory是接口:spring中实现 ...

  6. Java 8 Lambda表达式之方法引用 ::双冒号操作符

    双冒号运算符就是java中的方法引用,方法引用的格式是类名::方法名. 这里只是方法名,方法名的后面没有括号“()”.--------> 这样的式子并不代表一定会调用这个方法.这种式子一般是用作 ...

  7. postman全方位讲解(有空看下)

    Postman 接口测试神器 Postman 是一个接口测试和 http 请求的神器,非常好用. 官方 github 地址: https://github.com/postmanlabs Postma ...

  8. sqlnet.ora限制客户端IP访问

    实现功能: 只允许某几个IP访问数据库服务端(白名单): $ORACLE_HOME/network/admin/sqlnet.ora 添加2个主要参数 TCP.VALIDNODE_CHECKING=y ...

  9. OPENVPN2.3配置文档官方说明

    openvpn Section: Maintenance Commands (8)Index NAME openvpn - secure IP tunnel daemon. SYNOPSIS open ...

  10. kvmgt-kernel 实现GPU虚拟化

    KVMGT-kernel是Intel开源技术01.org推出的一项完整的GPU虚拟化解决方案,在KVM和XEN的基础上实现.本文档对该技术进行相应测试,让大家有个基本参考和了解.KVMGT-kerne ...