20145118 《Java程序设计》 实验报告三

实验三 敏捷开发与XP实践

实验内容

  1. XP基础
  2. XP核心实践
  3. 相关工具

实验要求

1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程

2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导

3 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。

实验步骤

(一)敏捷开发与XP

(二)编码标准

程序代码初始是这样的:

20145118 《Java程序设计》 实验报告三

因为我用的是IDEA,通过网上搜索,知道了IDEA中自动规范缩进是Ctrl+Alt+i,操作后如下:

20145118 《Java程序设计》 实验报告三

根据代码逻辑,加入空格后,如下:

20145118 《Java程序设计》 实验报告三

目前为止的学习过程中,如何命名是让我一直有些头疼的问题,恰好这次实验中给了命名规则:

要体现各自的含义
包、类、变量用名词
方法名用动宾
包名全部小写,如:io,awt
类名第一个字母要大写,如:HelloWorldApp
变量名第一个字母要小写,如:userName
方法名第一个字母要小写:setName

...

标识符名字应当直观且可以拼读,可望文知意,不必进行“解码”,一般采用英文单词或其组合,便于记忆和阅读,切忌使用汉语拼音来命名,用词要准确例如“当前值”应该起名currentValue,写成nowValue就不准确了,但还凑合,写成dqz(dang qian zhi 首字母)就是笑话了。

标识符的长度“min-length && max-information”的原则,比如:maxVal 比 maxValueUntilOverflow要好些,可以通过去元音法把变量名变短,如returnValue->rtnVal ,message->msg;一般全局变量用具有说明性的名字,局部变量用短名字:单字符的名字,常见的如i,j,k等用作局部变量。

(三)结对编程

两人中每人都要对代码负责,但有具体分工,总结来说可以是驾驶员和领航员,在协作的基础上发挥个性.

(四)版本控制

20145118 《Java程序设计》 实验报告三

20145118 《Java程序设计》 实验报告三

20145118 《Java程序设计》 实验报告三

20145118 《Java程序设计》 实验报告三

(五)重构

20145118 《Java程序设计》 实验报告三

20145118 《Java程序设计》 实验报告三

在网上找到了一篇文章,http://www.open-open.com/home/space-37924-do-blog-id-9475.html

介绍了20种IDEA的重构功能,与eclipse操作还是有一定区别,现列举一下博客中提到的功能:

Out-of-the-box support for languages and frameworks

20145118 《Java程序设计》 实验报告三

Find and replace code duplicates

20145118 《Java程序设计》 实验报告三

Rename and name patterns recognition

20145118 《Java程序设计》 实验报告三

Type migration

20145118 《Java程序设计》 实验报告三

Invert boolean

20145118 《Java程序设计》 实验报告三

String fragments

20145118 《Java程序设计》 实验报告三

Other productivity-boosting features

20145118 《Java程序设计》 实验报告三

20145118 《Java程序设计》 实验报告三

Inline to anonymous

20145118 《Java程序设计》 实验报告三

Encapsulate fields

20145118 《Java程序设计》 实验报告三

一个完整的重构流程包括:

从版本控制系统代码库中Check out code

读懂代码(包括测试代码)

发现bad smell

Refactoring

运行所有的Unit Tests

往代码库中Check in code

(六)实践项目

1.以结对编程的方式编写一个软件,Blog中要给出结对同学的Blog网址,可以拍照展现结对编程情况,可以参考一下其他学校的作业

2.记录TDD和重构的过程,测试代码不要少于业务代码,Eclipse中refactor菜单下的重构技能不要少于5个

3.团队代码要使用git在实验楼中托管,要使用结对同学中的一个同学的账号托管。

4 程序要有GUI界面,参考用户界面和用户体验

5.程序功能从豌豆荚游戏中选择一款用Java实现,注意:团队之间项目不能有重复,课代表协调一下。

在git代码时,尝试了半天,总是出现这样的情况:

20145118 《Java程序设计》 实验报告三

我的实验伙伴是20145129刘芳芳 博客地址是

http://www.cnblogs.com/l-cat/

产品代码是:

/*
* 设计思路:给一个N的值计算出从2到N之间的素数
* 定义一个方法即一个数不被小于它根号下所有整数整除,则这个数为素数
* 运用数组和循环语句完成程序
*/
package t5;
import java.util.*; public class test5 {
public static boolean chek(int n) { //判断是否为素数的方法
for(int i=2;i<=Math.sqrt(n);i++) {
if(n%i==0)
return false;
}
return true;
} public static void main(String[] args)
{
Scanner sc=new Scanner(System.in); //输入N的数值
int n=sc.nextInt();
int[] array=new int[1000];
int k=0;
for(int i=2;i<=n;i++) //调用方法,并将素数存入数组
{
if(chek(i))
{
array[k]=i;
k++;
}
}
for (int i=0;i<k;i++) //输出数组元素
{
System.out.println(array[i]);
}
sc.close(); //关闭Scanner(关闭输入流)
}
}

测试代码:

package cy;

import static org.junit.Assert.*;
import java.io.*;
import org.junit.Test; import java.io.FileNotFoundException;
import java.lang.AssertionError;
/**
* Created by cy on 2016/4/24.
*/ public class Test5Test { @org.junit.Test
public void testChek() throws FileNotFoundException,EOFException{
try {
if("n<0") {
throw new FileNotFoundException();
}else {
throw new EOFException();
}
}catch(FileNotFoundException n) {
n.printStackTrace();
throw n;
}catch(EOFException n) {
n.printStackTrace();
throw n;
} } }

6.实验报告中统计自己的PSP(Personal Software Process)时间

步骤 耗时 百分比
需求分析 30分钟 6.7%
设计 30分钟 6.7%
代码实现 120分钟 26.7%
测试 240分钟 53.3%
分析总结 30分钟 6.7%

参考资料

1.《解析极限编程》

2.《构建之法 (电子版)》,著者邹欣Blog

3.《结对编程技术》

4.《版本控制之道》

5.《重构》

6.《重构与模式》

7.《程序设计实践》

上一篇:java实验报告三


下一篇:Binding在WPF中的使用