java实验报告设计建议_20145118 《Java程序设计》 实验报告三

实验三 敏捷开发与XP实践

实验内容

XP基础

XP核心实践

相关工具

实验要求

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

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

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

实验步骤

(一)敏捷开发与XP

(二)编码标准

程序代码初始是这样的:

5031f721369ce68f8afc92bf4ced4d0a.gif

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

83417b11b773f7d0c7c42fb3ca1c69ba.gif

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

a11aa667acc95b06ba1de5efc219f5ef.gif

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

要体现各自的含义

包、类、变量用名词

方法名用动宾

包名全部小写,如:io,awt

类名第一个字母要大写,如:HelloWorldApp

变量名第一个字母要小写,如:userName

方法名第一个字母要小写:setName

...

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

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

(三)结对编程

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

(四)版本控制

f142164edcaae5c81454d65cf203c748.gif

98352244bf02a51306a60e6f274a714c.gif

e41471e9a63b665b8603b8bb980d8d6a.gif

44fa62f5108b40ce01759ca7ba35ca79.gif

(五)重构

2cadc6eccf6521243047fc644ec0d37b.gif

41dfca27788a595b5bf6b2abc7e53d1c.gif

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

cfad64ba949647ff557d570fc007a64a.png

Find and replace code duplicates

b1f5c0b68d34bd7cf32d1370d92678cc.png

Rename and name patterns recognition

61e46c31ec9be75aed9a72fc79e1b1b3.png

Type migration

1e4c4d287b5fa7ab8da6474ad49bd54d.png

Invert boolean

385f53cd56ae3d8686faac2706d5ed6b.png

String fragments

d82d6dd6ecec5c7db3f38ee2424f1f18.png

Other productivity-boosting features

c863b1acc05ab6dc53c1f2982bf66c23.png

d8142d98fdbf9d0da0684608da0e64cc.png

Inline to anonymous

993c12689f9e2f32f449bf32aa4ed676.png

Encapsulate fields

8609063d7c76dd3eefe1491e2448340a.png

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

从版本控制系统代码库中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代码时,尝试了半天,总是出现这样的情况:

bf73b93268eea685651a07b88182225f.gif

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

产品代码是:

/*

* 设计思路:给一个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

{

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.《程序设计实践》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值