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. "废物利用"也抄袭——“完全”DIY"绘图仪"<三、上位机程序设计>

    上位机的程序主要是解析图片和生成较好的代码,现在实现的功能有灰度打印,二值打印,轮廓打印,骨骼打印.当然,必不可少的是打印大小的控制.测试了一些图片,总体来说,打印速度依次加快,因为打印的内容依次减少 ...

  2. 关于android 动态设置view 样式 问题(默认style)

    解决方案一: Button btn=new Button(new ContextThemeWrapper(mContext,R.style.service_text_dialog_style),nul ...

  3. boost::threadpool 调用类成员变量并传入参数 的方法

    1. 首先到官网下载   http://threadpool.sourceforge.net/   2. 包含头文件   #include "../boost/threadpool.hpp& ...

  4. Java 中的包装类

    Java 中的包装类 相信各位小伙伴们对基本数据类型都非常熟悉,例如 int.float.double.boolean.char 等.基本数据类型是不具备对象的特性的,比如基本类型不能调用方法.功能简 ...

  5. 租用游艇(简单区间dp)

    租用游艇 时间限制: 1 Sec  内存限制: 128 MB提交: 1  解决: 1[提交][状态][讨论版][命题人:quanxing] 题目描述 长江游艇俱乐部在长江上设置了n 个游艇出租站1,2 ...

  6. Bootstrap-CL:多媒体对象

    ylbtech-Bootstrap-CL:多媒体对象 1.返回顶部 1. Bootstrap 多媒体对象(Media Object) 本章我们将讲解 Bootstrap 中的多媒体对象(Media O ...

  7. 安卓控件获取器uiautomatorviewer初体验:"unable to connect to the adb. check if adb is installed correctly"

    解决方法:转自:https://plus.google.com/108487870030743970488/posts/2TrMqs1ZGQv Challenge Accepted:1. Screen ...

  8. ORA-00257:archiver error.Connect internal only, until freed的问题(转)

    删除归档日志_ORA-00257:archiver error.Connect internal only, until freed的问题   ORA-00257: archiver error. C ...

  9. js 取元素相对页面的高度和宽度

    function pos(elem) {    var x = elem.offsetLeft,  y = elem.offsetTop;    while (elem = elem.offsetPa ...

  10. yii mailer 扩展发送邮件

    // 将mailer扩张放到 yii 的extension目录下 $message = 'Hello World!'; $mailer = Yii::createComponent('applicat ...