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. Phonegap 工作原理

    1.Phonegap是什么 PhoneGap 是一个基于HTML和JavaScript的应用开发平台,使用它可以构建本地应用.你可以把PhoneGap看作一个正方形的web view containe ...

  2. Sql Server中的事务隔离级别

    数据库中的事物有ACID(原子性,一致性,隔离性,持久性)四个特性.其中隔离性是用来处理并发执行的事务之间的数据访问控制.SqlServer中提供了几种不同级别的隔离类型. 概念 Read UnCom ...

  3. CentOS查看显卡及GPU相关信息

    lspci  | grep -i vga 这样就可以显示机器上的显卡信息,比如 [root@localhost conf]# lspci | grep -i vga01:00.0 VGA compat ...

  4. cocos2dx继承结构图

    包含关系 CCDirector->CCScene->CCLayer->CCSprite->CCAction 继承关系 CCObject---CCAction(动作,控制图层运动 ...

  5. 彻底解密C++宽字符(二)

    彻底解密C++宽字符(二) 转:http://club.topsage.com/thread-2227977-1-1.html 4.利用codecvt和use_facet转换 locale和facet ...

  6. win7 php5.6 redis扩展

    步骤: 1.下载redis扩展 redis扩展下载地址:http://windows.php.net/downloads/pecl/snaps/redis/ 查看phpinfo下载匹配的版本(一定要选 ...

  7. Spring batch学习 持久化表结构详解(2)

    #接上一篇 这一篇讲一下持久化需要表 batch_job_execution, batch_job_execution_context, batch_job_execution_params, bat ...

  8. 安装Android studio出现'tools.jar' seems to be not in Android Studio classpath......的解决方法

    安装Android studio出现'tools.jar' seems to be not in Android Studio classpath......的解决方法 原创 2015年07月31日 ...

  9. linux中grep工具

    正则表达式 以前我们用grep在一个文件中找出包含某些字符串的行,比如在头文件中找出一个宏定义.其实grep还可以找出符合某个模式(Pattern)的一类字符串.例如找出所有符合xxxxx@xxxx. ...

  10. ES6系列_7之箭头函数和扩展

    1.默认值 在ES6中给我们增加了默认值的操作相关代码如下: function add(a,b=1){ return a+b; } console.log(add(1)); 可以看到现在只需要传递一个 ...