一、实验报告封面

    • 课程:Java程序设计 班级:1751 班 姓名:谢文航 学号:20175126
    • 指导教师:娄嘉鹏 实验日期:2019年5月2日
    • 实验时间:--- 实验序号:实验三
    • 实验名称:敏捷开发与XP实践
    • 实验内容
    • 1. XP基础

      2. XP核心实践

      3. 相关工具

      实验要求

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

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

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

二、实验内容

(一)编码标准

实验步骤:

1.安装插件alibaba

2.在项目名称上单击右键,在弹出菜单上选择编码规约扫描

3.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化

public class CodeStandard {
public static void main(String [] args){
StringBuffer buffer = new StringBuffer();
buffer.append('S');
buffer.append("tringBuffer");
System.out.println(buffer.charAt(1));
System.out.println(buffer.capacity());
System.out.println(buffer.indexOf("tring"));
System.out.println("buffer = " + buffer.toString());
if(buffer.capacity()<20)
buffer.append("1234567");
for(int i=0; i<buffer.length();i++)
System.out.println(buffer.charAt(i));
}
}

  

3.2右击文件,找到格式化代码

4.研究Code菜单,找出一项让自己感觉最好用的功能

Code菜单:

  • Override Methods ( 重写覆盖方法 ) Ctrl + O
  • Implements Methods ( 实现接口方法 ) Ctrl + I
  • Gengrate ( 用于生成Construct、Getter/Setter、toString等) Alt + Insert
  • Surround With (使用if-else、for、while等语句包装代码段) Ctrl+Alt+T

  • SmartType ( 智能选择并实现 ) Ctrl + Shift + 空格
  • Cyclic Expand Word ( 循环往上选择单词 ) Alt + /
  • Cyclic Expand Word (Backwrad)( 循环往下选择单词 ) Alt + Shift + /
  • Expand ( 方法展开 ) Ctrl + 加号
  • Collapse ( 方法折叠 ) Ctrl + 减号
  • Expand Recursively ( 同上,方法展开 ) Ctrl + Alt + 加号
  • Collapse Recursively ( 同上,方法折叠 ) Ctrl + Alt + 减号
  • Expand All ( 全部方法展开 ) Ctrl + Shift + 加号
  • Collapse All ( 全部方法折叠 ) Ctrl + Shift + 减号
  • Expand doc comments ( 展开Java doc注释 )
  • Collapse doc comments ( 折叠Java doc注释 )
  • Insert Live Template ( 选择Live Templates模板 ) Ctrl + J
  • Surround with Live Template ( 选择Live Templates模板 ) Ctrl + Alt + J
  • Comment with Line Comment ( 行注释 ) Ctrl + /
  • Reformat Code ( 格式化代码 ) Ctrl + Alt + L
  • Show Reformat File Dialog ( 弹出格式化弹框 ) Ctrl + Alt + Shift + L
  • Optimize Imports ( 去除未引用的包导入声明 ) Ctrl + Alt + O

(二)下载搭档的代码,进行不少于三次的junit测试

1.邀请搭档加入仓库

2.加入搭档的仓库

3.下载搭档的代码

·打开终端,进行clone

·找到complex代码

4.对代码进行Junit测试

·全部正常:

5.git add,git push

·提交至码云

(三)版本控制

  • 版本控制提供项目级的 undo(撤销) 功能: 没有什么事情是终结版本, 任何错误必须很容易回滚。 假设你在使用世界上最复杂的文字处理系统。 它具备了所有的能想到的功能,就是没有支持 DELETE(删除) 键。想象你打字的时候得多么的谨慎和缓慢吧, 特别是一篇超大的文档的快临近末尾的时候, 一个不小心就要重头再来(试想你选中所有的文字, 不小心按了 DELETE 键, 因为没有撤销功能,只好重新录入)。编辑文字和版本控制相同,任何时候都需要回滚,无论是一个小时, 一天, 还是一周, 这让你的团队工作自由快速的工作, 而且对于修正错误也非常自信。
  • 版本控制允许多人在同一代码上工作, 只要遵守一定的控制原则就行。 再也不会发生诸如一个人覆盖了另一个人编辑的代码,导致那个人的修改无效这样的情况。
  • 版本控制系统保存了过去所作的修改的历史记录。如果你遭遇到一些惊讶的代码,通过版本控制系统可以很容易找出是谁干的, 修改了什么, 修改的时间, 如果幸运的话,还能找出原因。
  • 版本控制系统还支持在主线上开发的同时发布多个软件版本。在软件发布的时候也不需要整个团队的停止工作,不需要冻结代码。
  • 版本控制也是项目级的时间机器,你可以选择任何一个时间, 精确地查看项目在当时的情况。 这对研究非常有用, 也是重现以前某个有问题的发布版本的基础。

(四)重构

(1)

1.下载搭档的代码

import java.util.*;
public class Example8_15 {
public static void main(String args[]) {
Calendar calendar=Calendar.getInstance();
calendar.setTime(new Date());
int year = calendar.get(Calendar.YEAR),
month = calendar.get(Calendar.MONTH)+1,
day = calendar.get(Calendar.DAY_OF_MONTH),
hour = calendar.get(Calendar.HOUR_OF_DAY),
minute = calendar.get(Calendar.MINUTE),
second = calendar.get(Calendar.SECOND);
System.out.print("现在的时间是:");
System.out.print(""+year+"年"+month+"月"+day+"日");
System.out.println(" "+hour+"时"+minute+"分"+second+"秒");
int y = 2012,m = 9,d = 1;
calendar.set(y,m-1,d); //将日历翻到2012年九月一日,注意8表示九月
long time1 = calendar.getTimeInMillis();
y = 2016;
m = 7;
day = 1;
calendar.set(y,m-1,d); //将日历翻到2016年七月一日
long time2 = calendar.getTimeInMillis();
long subDay = (time2-time1)/(1000*60*60*24);
System.out.println(""+new Date(time2));
System.out.println("与"+new Date(time1));
System.out.println("相隔"+subDay+"天");
}
}

  

2.进行重构

重构1:所有类都必须添加创建者信息

重构2://注释应在其上方

重构3:类名要遵循驼峰形式

(五)JAVA密码学

体验加解密---凯撒密码

其加密过程如下:

在这里,我们做此约定:明文记为m,密文记为c,加密变换记为E(k1,m)(其中k1为密钥),解密变换记为D(k2,m)(k2为解密密钥)(在这里k1=k2,不妨记为k)。凯撒密码的加密过程可记为如下一个变换:

c≡m+k mod n (其中n为基本字符个数)

同样,解密过程可表示为:
m≡c+k mod n (其中n为基本字符个数)

public static void main(String args[]) throws Exception{
String s=args[0];
int key=Integer.parseInt(args[1]);
String es="";
for(int i=0;i<s.length( );i++)
{ char c=s.charAt(i);
if(c>='a' && c<='z') // 是小写字母
{ c+=key%26; //移动key%26位
if(c<'a') c+=26; //向左超界
if(c>'z') c-=26; //向右超界
}
else if(c>='A' && c<='Z') // 是大写字母
{ c+=key%26;
if(c<'A') c+=26;
if(c>'Z') c-=26;
}
es+=c;
}
System.out.println(es);
}

  

·进行测试

三、遇到的问题及解决办法

问题一:在进行test的时候,找不到Junit包

问题一解决办法:使用everything找到Junit.jar的位置,然后在项目结构里加入即可

四、总结

本次实验主要教我们如何规范自己的代码,使代码不仅能让自己看懂,更能便于他人理解。同时本次实验还学会了如何给自己的码云仓库添加成员,也是非常实用的一点。

码云链接:https://gitee.com/Apollo20175126/java-besti-20175126

2018-2019-2 20175126谢文航 实验三《敏捷开发与XP实践》实验报告的更多相关文章

  1. 20165230 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    20165230 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: 指导教 ...

  2. 2016-2017-2 20155339 《Java面向对象程序设计》实验三敏捷开发与XP实践实验报告

    2016-2017-2 20155339 <Java面向对象程序设计>实验三敏捷开发与XP实践实验报告 实验内容 XP基础 XP核心实践 相关工具 实验内容 一.在IDEA中使用工具(Co ...

  3. 实验三 敏捷开发与XP实践实验报告

    实验三 敏捷开发与XP实践实验报告 实验内容 1. XP基础 2. XP核心实践 3. 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vi ...

  4. 实验三 敏捷开发与XP实践 实验报告 20162305李昱兴

    实验三 敏捷开发与XP实践 实验报告 20162305 一.什么是敏捷开发与XP 敏捷开发(Agile Development)是一种以人为核心.迭代.循序渐进的开发方法.敏捷开发以用户的需求进化为核 ...

  5. 20175212童皓桢 实验三敏捷开发与XP实践实验报告

    20175212童皓桢 实验三敏捷开发与XP实践实验报告 实验内容 XP基础 XP核心实践 相关工具 实验步骤 一.Code菜单功能的研究 Move Line/statement Down/Up:将某 ...

  6. 20145308刘昊阳 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    20145308刘昊阳 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...

  7. 20162311 实验三 敏捷开发与XP实践 实验报告

    20162311 实验三 敏捷开发与XP实践 实验报告 实验内容 一.研究学习IDEA中的Code菜单 使用Code ->Reformate Code功能将以下代码格式化 public clas ...

  8. 20165308实验三 敏捷开发与XP实践实验报告

    实验三 敏捷开发与XP实践实验报告 实验目的 安装 alibaba 插件,解决代码中的规范问题.再研究一下Code菜单,找出一项让自己感觉最好用的功能. 在码云上把自己的学习搭档加入自己的项目中,确认 ...

  9. 20155207王雪纯 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    20155207王雪纯 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...

  10. 20155220 实验三 敏捷开发与XP实践 实验报告

    20155220 实验三 敏捷开发与XP实践 实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim ...

随机推荐

  1. C++输出字符指针指向的地址

    int main() { char *s2 = "jwdajkj"; ]; )); printf("%p,%p\n", s3, s1); cout <&l ...

  2. 【OpenGL】---认识CubeTexture

    一.OpenGL Cube Texture 立方体纹理 立方体纹理是一种特殊的纹理技术,他用6幅二维贴图构成一个以原点为中心的纹理立方体.对于每个片段,纹理坐标(s,t,r)被当做三维向量看待,每个纹 ...

  3. Kakuro Extension【最大流】

    HDU-3338 这道题真的处理起来好复杂啊,题意就是个简单的方格填数问题,但是每个白点至少放1,那么最后的可能解是怎样的呢?我们是不是要把x轴上的和y轴上的统一起来,然后就是每个点都被对应的x和y匹 ...

  4. 机器学习实战笔记-10-K均值聚类

    K-均值聚类 优点:易实现.缺点:可能收敛到局部最小值,大规模数据集上收敛较慢:适用于数值型数据. K-均值聚类(找到给定数据集的k个簇) 算法流程 伪代码: 创建k个点作为起始质心(经常是随机选择) ...

  5. Mac007--Mysq服务端&客户端安装

    一.安装Mysql服务端与Navicat Premium客户端 参见博客:https://blog.csdn.net/wtdask/article/details/79025674 安装mysql服务 ...

  6. [SHOI2012] 火柴游戏

    [SHOI2012] 火柴游戏 [题目链接] 链接 [思路要点] 首先发现移动火柴操作可以放到最后做.每一次移动火柴一定可以看做是添加一根火柴再删除一根火柴,并且可以将任意一次添加和一次删除操作合并为 ...

  7. Emmet-前端开发神器

    地址:https://segmentfault.com/a/1190000007812543 Emmet是一款编辑器插件,支持多种编辑器支持.在前端开发中,Emmet 使用缩写语法快速编写 HTML. ...

  8. Pandas案例--人口密度分析

    需求: 导入文件,查看原始数据 将人口数据和各州简称数据进行合并 将合并的数据中重复的abbreviation列进行删除 查看存在缺失数据的列 找到有哪些state/region使得state的值为N ...

  9. 记录混合APP开发遇到的坑!!

    1.在IOS中给body绑定click事件会失效 2.在IOS中<div contenteditable="true"></div>中点击时可以弹出键盘但是 ...

  10. python 面向对象(类)--学习笔记

    面向对象是一种编程方式, 主要集中在类和对象的两个概念 python 中的类符合封装, 继承, 多态的特征 类 是一个模板, 是n多函数的集成 对象 是类的实例化 类的成员分为三大类:字段.方法.属性 ...