2018-2019-2 20175227张雪莹《Java程序设计》
实验三 《敏捷开发与XP实践》
实验报告封面
- 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号:20175227
- 指导教师:娄嘉鹏 实验日期:2019年4月29日
- 实验时间:--- 实验序号:实验三
- 实验名称:敏捷开发与XP实践
- 实验题目:
- 实验要求:
- 完成实验三 敏捷开发与XP实践中的内容,参考Java密码学算法相关内容
- 其中Eclipse相关的内容参考Intellj IDEA简易教程换成IDEA实现
- 完成云班课中的检查点,也可以先完成实验报告,直接提交。注意不能只有截图,要有知识点,原理,遇到的问题和解决过程等说明。实验报告中一个检查点要有多张截图。
- 发表实验报告博客,标题“学期(如2018-2019-2) 学号(如20175300)实验三《敏捷开发与XP实践》实验报告”
实验步骤
- 代码规范
- 要求:
- 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA
- 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装alibaba 插件,解决代码中的规范问题。
- 在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下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)); } }
IDEA中的插件,通过Jetbrains官方仓库安装:打开
Settings
->Plugins
->Marketplace
在搜索框输入alibaba即可看到Alibaba Java Code Guidelines
插件,点击Install进行安装,然后重启IDE生效:
- 在项目名称上单击右键,在弹出菜单上选择
编码规约扫描
:
- 在IDEA中使用工具(
Code
->Reformate Code
)把下面代码重新格式化
- 下面简单介绍一下
Code
菜单中选项的简单用法:Override Methods
:重载方法/新建方法Implement Methods
:执行方法Generate
:创建类里面任何字段的getter与setter方法Surround with
:将某条语句被if、for等等封装语句括起Move Statement Down/up
:将语句下移到后一模块之后Move line down
:调换语句顺序Comment with Line/Block Comment
:两种注释Reformat Code
:将代码按标准格式缩进
- 要求:
- 结对编程
- 要求:
- 在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后git add .; git commit -m "自己学号 添加内容";git push;
- 提交搭档项目git log的截图,包含上面git commit的信息,并加上自己的学号水印信息。
- 结对编程是XP中的重要实践。在结对编程模式下,一对程序员肩并肩、平等地、互补地进行开发工作。
- 结对编程中有两个角色:
- 驾驶员(Driver)是控制键盘输入的人。
- 领航员(Navigator)起到领航、提醒的作用。
- 邀请结对伙伴加入自己的仓库
- 打开自己的码云项目
- 点击
管理
->仓库成员管理
->添加仓库成员
->邀请用户
- 要求:
- 打开虚拟机,输入git clone 搭档码云链接
- 转到要添加代码的搭档目录下进行
atom Complex.java
和atom ComplexTest.java
- Complex代码为:
/**
@author Xueying Zhang 20175227
@date 2019/4/29 12:49.
*/
public class Complex{
private double a;
private double b;
public Complex(double a, double b) {
this.a = a;
this.b = b;
}
public static double getRealPart(double a) {
return a;
}
public static double getImagePart(double b) {
return b;
}
public Complex ComplexAdd(Complex c) {
return new Complex(a + c.a, b + c.b);
}
public Complex ComplexSub(Complex c) {
return new Complex(a - c.a, b - c.b);
}
public Complex ComplexMulti(Complex c) {
return new Complex(a * c.a - b * c.b, a * c.b + b * c.a);
}
public Complex ComplexDiv(Complex c) {
return new Complex((a * c.b + b * c.a)/(c.b * c.b + c.a * c.a), (b * c.b + a * c.a)/(c.b * c.b + c.a * c.a));
}
public String toString() {
String s = " ";
if (b > 0) {
s = a + "+" + b + "i";
}
if (b == 0) {
s = a + "";
}
if (b < 0) {
s = a + " " + b + "i";
}
return s;
}
}
- 需要测试的方法有:
getRealPart
;getImagePart
;ComplexAdd
;ComplexSub
;ComplexMulti
;ComplexDiv
- 测试代码如下:
import junit.framework.TestCase;
import org.junit.Test;
public class ComplexTest extends TestCase {
Complex com1=new Complex(1.0,2.0);
Complex com2=new Complex(0.0,1.0);
Complex com3=new Complex(1.0,0.0);
Complex com4=new Complex(-1.0,-2.0);
public void testgetRealPart()throws Exception{//测试getRealPart方法
assertEquals(2.7,Complex.getRealPart(2.7));
assertEquals(-2.7,Complex.getRealPart(-2.7));
assertEquals(5.0,Complex.getRealPart(5.0));
assertEquals(0.0,Complex.getRealPart(0.0));
}
public void testgetImagePart()throws Exception{//测试getImagePart方法
assertEquals(2.7,Complex.getImagePart(2.7));
assertEquals(-2.7,Complex.getImagePart(-2.7));
assertEquals(5.0,Complex.getImagePart(5.0));
assertEquals(0.0,Complex.getImagePart(0.0));
}
public void testComplexAdd()throws Exception{//测试ComplexAdd方法
assertEquals("1.0+3.0i",com1.ComplexAdd(com2).toString());
assertEquals("2.0+2.0i",com1.ComplexAdd(com3).toString());
assertEquals("1.0+1.0i",com2.ComplexAdd(com3).toString());
assertEquals("0.0",com1.ComplexAdd(com4).toString());
}
public void testComplexSub()throws Exception{//测试ComplexSub方法
assertEquals("1.0+1.0i",com1.ComplexSub(com2).toString());
assertEquals("0.0+2.0i",com1.ComplexSub(com3).toString());
assertEquals("-1.0+1.0i",com2.ComplexSub(com3).toString());
assertEquals("2.0+4.0i",com1.ComplexSub(com4).toString());
}
public void testComplexMulti()throws Exception{//测试ComplexMulti方法
assertEquals("-2.0+1.0i",com1.ComplexMulti(com2).toString());
assertEquals("1.0+2.0i",com1.ComplexMulti(com3).toString());
assertEquals("0.0+1.0i",com2.ComplexMulti(com3).toString());
assertEquals("3.0 -4.0i",com1.ComplexMulti(com4).toString());
}
public void testComplexDiv()throws Exception{//测试ComplexDiv方法
assertEquals("1.0+2.0i",com1.ComplexDiv(com2).toString());
assertEquals("2.0+1.0i",com1.ComplexDiv(com3).toString());
assertEquals("1.0",com2.ComplexDiv(com3).toString());
assertEquals("-0.8 -1.0i",com1.ComplexDiv(com4).toString());
}
}
运行示例如下:
- 上传至码云:
- 重构
- 要求
- 实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA
- 完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。
- 要求
实验中遇到的问题和解决过程
- 问题1:在实现第一步代码规范时,下面提示需要注释作者信息,我之前并没有设置过,于是出现了上文截图中系统默认的作者信息。
- 问题1解决办法:在IDEA中选
Settings
->Editor
->File and Code Templates
->Class
在程序框中输入:
/**
*@author xxx
*@date ${DATE} ${TIME}.
*/
再次重新新建class就能看见有作者信息注释了:
感悟和收获
参考资料
- https://blog.csdn.net/weixin_42254058/article/details/81219931