zoukankan      html  css  js  c++  java
  • 20145118 《Java程序设计》 实验报告三

    实验三 敏捷开发与XP实践

    实验内容

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

    实验要求

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

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

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

    实验步骤

    (一)敏捷开发与XP

    (二)编码标准

    程序代码初始是这样的:

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

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

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

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

    ...

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

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

    (三)结对编程

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

    (四)版本控制

    (五)重构

    在网上找到了一篇文章,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

    Find and replace code duplicates

    Rename and name patterns recognition

    Type migration

    Invert boolean

    String fragments

    Other productivity-boosting features

    Inline to anonymous

    Encapsulate fields

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

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

    我的实验伙伴是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.《程序设计实践》

  • 相关阅读:
    淘宝大牛们——晒一晒淘宝网技术内幕
    csrf攻击与防范
    Angular路由——路由守卫
    Angular路由——辅助路由
    Angular路由——在路由时候传递数据
    Angular路由——子路由
    Angular路由——路由基础
    Angular组件——投影
    Angular组件——组件生命周期(二)
    Angular组件——组件生命周期(一)
  • 原文地址:https://www.cnblogs.com/cy1123/p/5427283.html
Copyright © 2011-2022 走看看