20165232《Java程序设计》实验三(敏捷开发与XP实践)实验报告
实验报告封面
指导教师:娄嘉鹏 实验日期:2018年4月30日
实验时间:15:45 - 17:20 实验序号:实验三 实验名称:敏捷开发与XP实践实验内容:
- 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装alibaba 插件,解决代码中的规范问题。
在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能。提交截图,加上自己学号水印。
- 在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后git add .; git commit -m "自己学号 添加内容";git push;
- 完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。
- 参考 http://www.cnblogs.com/rocedu/p/6683948.html,以结对的方式完成Java密码学相关内容的学习,结合重构,git,代码标准。
实验步骤
(一)alibaba 插件与Code菜单
Move Line/statement Down/Up:将某行、表达式向下、向上移动一行
suround with:用 try-catch,for,if等包裹语句
comment with line/block comment:把选中它区域变成注释
show reformat file dialog:按照格式自动对齐
Optimize imports:优化imports
Insert Live Template:插入 Live Template 缩写
(二)Complex代码添加测试用例
结对伙伴代码
import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.PrintStream;import java.util.Random;import java.util.Scanner;public class SizeYunsuan { /** * @param args */ public static Random rand=new Random(); public static class Qst { static int Operand(int Range)//产生操作数 { int Opd=rand.nextInt(Range*2+1)-Range; return Opd; } public static char OperatorKind(char Operator)//生成运算符 { int OperatorPossible=rand.nextInt(3); switch(OperatorPossible) { case 0: Operator='+'; break; case 1: Operator='-'; break; case 2: Operator='*'; break; default: System.out.print("Error!"); } return Operator; } public static boolean IfRepeated(String str[],int Location)//判断是否重复 { for(int i=0;i
运行通过的截图
搭档项目git log的截图
(三)重构
- Rename可以给类、包、方法、变量改名字,增加代码的可读性。
- Refactor->Encapsulate Field...用来封装成员变量
- Source->Generate toString()...用来产生一个toString方法
(四)以结对方式完成Java密码学的学习
凯撒密码的加密过程可记为如下一个变换:
c≡m+k mod n (其中n为基本字符个数)
同样,解密过程可表示为:
m≡c+k mod n (其中n为基本字符个数)
重构后,将Code,Rename为Caesar,并为p赋初值0
实验体会
通过此次实验,我明白了代码规范性的重要,也学习了一些基础的规范代码的操作。
PSP
步骤 | 耗时 | 百分比 |
---|---|---|
需求分析 | 25min | 8% |
设计 | 75min | 25% |
代码实现 | 150min | 50% |
测试 | 12.5min | 4% |
分析总结 | 37.5min | 13% |