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. 关于Eclipse

    Navigator窗口 之前看到同事使用Eclipse的Navigator窗口,十分不解这个窗口有啥用:今天通过了解才知道Package Explorer是从工程的角度来显示文件,比如settings ...

  2. CentOS 6.5 下搭建FastDFS服务

    参考网站: http://www.open-open.com/lib/view/open1435468300700.html http://blog.csdn.net/lynnlovemin/arti ...

  3. centos 6.5 下 安装 git

    2018-07-02 centos安装Git有两种方式,一种通过源安装,通过如下命今,即可一键安装成功: yum -y install git 但是通过源安装的Git,目前最高版本是1.7,想要使用更 ...

  4. "废物利用"也抄袭——“完全”DIY"绘图仪"<一、准备工作>

    上一个光驱造已经解体若干天了,因为事情很多arduino也不太熟悉,直到今天才做出了一个可以用的样本.当然,上位机和下位机代码都写好了,可以正常工作,但是由于电路知识还是中学那点没还给老师的,加以各种 ...

  5. Java renameTo()重新命名此抽象路径名表示的文件

    Java手册 renameTo public boolean renameTo(File dest) 重新命名此抽象路径名表示的文件. 此方法行为的许多方面都是与平台有关的:重命名操作无法将一个文件从 ...

  6. linux下scp用法

    scp 对拷文件夹 和 文件夹下的所有文件 对拷文件并重命名 对拷文件夹 (包括文件夹本身) scp -r   /home/wwwroot/www/charts/util root@192.168.1 ...

  7. python3调用阿里云短信服务

    #!/usr/bin/env python#-*- coding:utf-8 -*-#Author:lzd import uuidimport datetimeimport hmacimport ba ...

  8. OpenCL 使用函数 clCreateProgramWithBinary 来创建程序

    ▶ 函数 clCreateProgramWithSource 接收 OpenCL 代码(设备无关)来创建程序,而函数 clCreateProgramWithBinary 接收已经经过函数 clBuil ...

  9. 小程序-Now you can provide attr "wx:key" for a "wx:for" to improve performance

    转自:https://www.cnblogs.com/xpwi/p/9878871.html 小程序开发-Now you can provide attr "wx:key" for ...

  10. linux Crontab 使用

    cron 用法说明 全文如下: cron来源于希腊单词chronos(意为“时间”),是linux系统下一个自动执行指定任务的程序.例如,你想在每晚睡觉期间创建某些文件或文件夹的备份,就可以用cron ...