2018-2019-2 实验三 敏捷开发与XP实践
实验内容
1.XP基础
2.XP核心实践
3.相关工具
实验要求
1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程
2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网
络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导
3.严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。
实验步骤
一、编码标准
- 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装
alibaba
插件,解决代码中的规范问题。 - 在IDEA中使用工具(
Code->Reformate Code
)把CodeStandard
重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能。提交截图,加上自己学号水印。
1.IDEA中的插件,我们通过Jetbrains
官方仓库安装:打开 Settings ->Plugins -> Browse repositories...
在搜索框输入alibaba
即可看到Alibaba Java Code Guidelines
插件,点击Install
进行安装,然后重启IDE生效:
2.使用比较简单:在项目名称上单击右键,在弹出菜单上选择编码规约扫描
:
出现下图内容:
不规范的地方,有中文提示并且定位到了行,alibaba把问题分为block/critical/major三个等级,有些规则可以一键修复。
Java中的一般的命名规则有:
- 1.要体现各自的含义
- 2.包、类、变量用名词
- 3.方法名用动宾
- 4.包名全部小写,如:io,awt
- 5.类名第一个字母要大写,如:HelloWorldApp
- 6.变量名第一个字母要小写,如:userName
- 7.方法名第一个字母要小写:setName
3.在IDEA中使用工具Code->Reformate Code
,格式化代码:
规范后的代码:
4.Code菜单
- 1.Override Methods ( 重写覆盖方法 ) Ctrl + O
- 2.Implements Methods ( 实现接口方法 ) Ctrl + I
- 3.Delegate Methods
- 4.Gengrate ( 用于生成Construct、Getter/Setter、toString等) Alt + Insert
- 5.Surround With ( 生成包围代码 ) Ctrl + Alt +T
- 6.Unwarp/Remove ( 取消代码包围 ) Ctrl + Shift + Delete
- 7.Completion
- Basic Ctrl + 空格
- SmartType ( 智能选择并实现 ) Ctrl + Shift + 空格
- Cyclic Expand Word ( 循环往上选择单词 ) Alt + /
- Cyclic Expand Word (Backwrad)( 循环往下选择单词 ) Alt + Shift + /
- 8.Folding
- Expand ( 方法展开 ) Ctrl + 加号
- Collapse ( 方法折叠 ) Ctrl + 减号
- Expand Recursively ( 同上,方法展开 ) Ctrl + Alt + 加号
- Collapse Recursively ( 同上,方法折叠 ) Ctrl + Alt + 减号
- Expand All ( 全部方法展开 ) Ctrl + Shift + 加号
- Collapse All ( 全部方法折叠 ) Ctrl + Shift + 减号
- Expand to level...
- Expand all to level...
- Expand doc comments ( 展开Java doc注释 )
- Collapse doc comments ( 折叠Java doc注释 )
- Fold Selection / Remove region Ctrl + 句点
- Fold Code Block Ctrl + Shift + 句点
- 9.Insert Live Template ( 选择Live Templates模板 ) Ctrl + J
- 10.Surround with Live Template ( 选择Live Templates模板 ) Ctrl + Alt + J
- 11.Comment with Line Comment ( 行注释 ) Ctrl + /
- 12.Comment with Block Comment ( 块注释 ) Ctrl + Shift + /
- 13.Reformat Code ( 格式化代码 ) Ctrl + Alt + L
- 14.Show Reformat File Dialog ( 弹出格式化弹框 ) Ctrl + Alt + Shift + L
- 15.Auto-Indent Lines Ctrl + Alt + I
- 16.Optimize Imports ( 去除未引用的包导入声明 ) Ctrl + Alt + O
- 17.Rearrange Code ( 重新整理代码 )
- 18.Move Statement Down ( 方法、代码下移 ) Ctrl + Shift + 向下箭头
- 19.Move Statement Up ( 方法、代码上移 ) Ctrl + Shift + 向上箭头
- 20.Move Element Left Ctrl + Alt + Shift + 向左箭头
- 21.Move Element Rigth Ctrl + Alt + Shift + 向右箭头
- 22.Move Line Down Alt + Shift + 向下箭头
- 23.Move Line Up Alt + Shift + 向上箭头
- 24.Update Copyright
5.我觉得最好用的功能是:
- Override Methods ( 重写覆盖方法 )
Ctrl + O
- Reformat Code ( 格式化代码 )
Ctrl + Alt + L
- Surround With ( 生成包围代码 )
Ctrl + Alt +T
二、结对编程
- 在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后
git add .
;git commit -m "自己学号 添加内容"
;git push
- 提交搭档项目
git log
的截图,包含上面git commit
的信息,并加上自己的学号水印信息。
1.在码云上把自己的学习搭档加入自己的项目中
2.确认搭档的项目加入自己后
3.加入不少于三个JUnit单元测试用例
测试成功截图:
4.提交搭档项目git log
的截图
三、重构
- 完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。
- 一个完整的重构流程包括:
- 1.从版本控制系统代码库中Check out code
- 2.读懂代码(包括测试代码)
- 3.发现bad smell
- 4.Refactoring
- 5.运行所有的Unit Tests
- 6.往代码库中Check in code
1.选取下载搭档代码
重构前:
public class linshi {
public static void main(String[] args) {
//定义一个数组,比如
int arr[] = {1,2,3,4,5,6,7,8};
//打印原始数组的值
for(int i:arr){
System.out.print(i + " ");
}
System.out.println();
// 添加代码删除上面数组中的5
int weizhi = 0;
for(int i:arr){
if(arr[i] == 5){
weizhi = i;
break;
}
}
for(int i=weizhi+1;i<arr.length;i++){
arr[i-1] = arr[i];
}
arr[arr.length-1] = 0;
//打印出 1 2 3 4 6 7 8 0
for(int i:arr){
System.out.print(i + " ");
}
System.out.println();
// 添加代码再在4后面5
for(int i:arr){
if(arr[i] == 4){
weizhi = i;
break;
}
}
for(int i=arr.length-1;i>weizhi+1;i--){
arr[i] = arr[i-1];
}
arr[weizhi+1] = 5;
//打印出 1 2 3 4 5 6 7 8
for(int i:arr){
System.out.print(i + " ");
}
System.out.println();
}
}
2.编码规约扫描后发现
存在如下问题:
- 1.中括号是数组类型的一部分,数组定义如下:
String[] args
- 2.所有的类都必须添加创建者信息,说明:在设置模板时,注意IDEA的
@author
为${USER}
,而eclipse的@author
为${user}
,大小写有区别,而日期的设置统一为yyyy/MM/dd
的格式。 - 3.类名使用
UpperCamelCase
风格,必须遵从驼峰形式,但以下情形例外:(领域模型的相关命名)DO / BO / DTO / VO / DAO
3.重构后截图:
4.提交搭档项目git log的截图
四、Java 密码学算法
- 参考 http://www.cnblogs.com/rocedu/p/6683948.html,以结对的方式完成Java密码学相关内容的学习,结合重构,git,代码标准。
- 提交学习成果码云链接和代表性成果截图,要有学号水印。
1.体验加解密---凯撒密码
- 加密:
- 解密:
2.Java对称加密-DES算法
- 加密:
- 1.从文件中获取密钥
- 2.创建密码器(Cipher对象)
- 3.初始化密码器
- 4.获取等待加密的明文
- 5.执行加密
- 6.处理加密结果
- 解密:
- 1.获取密文
- 2.获取密钥
- 3.创建密码器(Cipher对象
- 4.初始化密码器
- 5.执行解密
3.Java非对称加密-RSA算法
- 生成双钥
- 1.创建密钥对生成器
- 2.初始化密钥生成器
- 3.生成密钥对
- 4.获取公钥和私钥
- 加密:
- 1.获取公钥
- 2.获取公钥的参数(e, n)
- 3.获取明文整数(m)
- 4.执行计算
- 解密:
- 1.读取密文
- 2.获取私钥
- 3.获取私钥的参数(d, n)
- 4.执行计算
- 5.计算明文整型数对应的字符串
4.使用密钥协定创建共享密钥
- 1.创建DH公钥和私钥
- 2.创建共享密钥
- 3.读取自己的DH私钥和对方的DH公钥
- 4.创建密钥协定对象
- 5.初始化密钥协定对象
- 6.执行密钥协定
- 7.生成共享信息
5.Java摘要算法- MD5
- 1.生成MessageDigest对象
- 2.传入需要计算的字符串
- 3.计算消息摘要
- 4.处理计算结果
码云链接
- 本人:20175319江野
- 结对伙伴:20175317钟睿文
实验过程中遇到的问题及解决方法
- 问题一:编译DigestPass时,出现错误提示:非法字符:“\ufeff”
- 问题一解决方法:在IDEA右下角,将编码改为GBK,再转为UTF-8,可以解决。
PSP
步骤 | 耗时/h | 百分比 |
---|---|---|
需求分析 | 0.5 | 10% |
设计 | 2 | 40% |
代码实现 | 1 | 20% |
测试 | 1 | 20% |
分析总结 | 0.5 | 10% |
2018-2019-2 实验三 敏捷开发与XP实践的更多相关文章
- 2018-2019-20175205 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告
2018-2019-20175205 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>&l ...
- 20175314 实验三 敏捷开发与XP实践
20175314 实验二 Java面向对象程序设计 一.实验内容 XP基础 XP核心实践 相关工具 二.实验步骤 (一)代码格式化 创建"175314.exp3"项目,在该项目下创 ...
- #实验三 敏捷开发与XP实践---实验报告
一.实验三 敏捷开发与XP实践-1 1.实验要求 -实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成I ...
- 20165223 实验三 敏捷开发与XP实践
目录 一.实验报告封面 二.具体实验内容 (一)敏捷开发与XP实践-1 代码规范格式化 (二)敏捷开发与XP实践-2 添加搭档项目 (三)敏捷开发与XP实践-3 搭档代码重构 (四)敏捷开发与XP实践 ...
- 20165323 实验三 敏捷开发与XP实践
一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:杨金川 学号:20165323 指导教师:娄嘉鹏 实验日期:2018年4月28日 实验时间:13:45 - 15:25 实验序号:实验 ...
- 20165235 实验三 敏捷开发与XP实践
20165235 实验三 敏捷开发与XP实践 主目录: 姓名:祁瑛 学号:20165235 班级:1652 实验课程:JAVA程序设计 实验名称:Java面向对象程序设计 实验时间:2018.4.30 ...
- 20172328《程序设计与数据结构》实验三 敏捷开发与XP实践报告
20172328<程序设计与数据结构>实验三 敏捷开发与XP实践报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 李馨雨 学号:20172328 实验教师:王志强 ...
- 20165336 实验三 敏捷开发与XP实践
20165336 实验三 敏捷开发与XP实践 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:康志强 学号:20165336 指导教师:娄嘉鹏 实验日期:2018年4月28日 实验时 ...
- 20165215 实验三 敏捷开发与XP实践
20165215 实验三 敏捷开发与XP实践 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:张家佳 学号:20165215 指导教师:娄嘉鹏 实验日期:2018年4月28日 实验时 ...
- 2018-2019-2 20175306实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告
2018-2019-2 20175306实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 1.没有Linux基础的同学建议先 ...
随机推荐
- MySQL DDL-对库和表的操作
#DDL /* 数据定义语言 库和表的管理 一.库的管理 创建.修改.删除 二.表的管理 创建.修改.删除 创建:create 修改: alter 删除:drop */ 一.库的管理 #1.库的创建 ...
- android测试开发概念
一:测试分类 1.分类概览 按测试阶段划分: 单元测试 集成测试 系统测试 验收测试 按是否覆盖源代码: 黑盒测试: 功能测试: 界面测试 逻辑测试 安装测试 应用性测试 兼容性测试 性能测试: 稳定 ...
- MapReduce数据格式化------<一>
引言: 我们知道:在MapReduce程序的Map阶段,需要有数据输入,而由于数据往往大小不规则,所以在数据输入Mapper之前,需要根据数据的特点和业务逻辑对数据进行格式化.这一步的格式化被称为:I ...
- ECMAScript严格模式
ECMAScript 第5个版本 1. 严格模式: 什么是: 比普通js运行机制,要求更严格的模式 为什么: js语言本身具有很多广受诟病的缺陷 何时: 今后所有的js程序,必须运行在严格模式下! 如 ...
- 负载均衡算法WeightedRoundRobin(加权轮询)简介及算法实现
Nginx的负载均衡默认算法是加权轮询算法,本文简单介绍算法的逻辑,并给出算法的Java实现版本. 本文参考了Nginx的负载均衡 - 加权轮询 (Weighted Round Robin). ...
- quotaon - 开启关闭文件系统配额
总览 (SYNOPSIS) quotaon [ -e | d ] [ -vug ] filesystem... quotaon [ -e | d ] [ -avug ] quotaoff [ -e | ...
- 基于TI 多核DSP 的大数据智能计算处理解决方案
北京太速科技有限公司 大数据智能计算,是未来的一个发展趋势,大数据计算系统主要完成数据的存储和管理:数据的检索与智能计算. 特别是在智能城市领域,由于人口聚集给城市带来了交通.医疗.建筑等各方面的压力 ...
- React(3) --react绑定属性
react绑定属性 /* react绑定属性注意: class要换成className for要换成 htmlFor style: <div style={{"color": ...
- JS window对象 返回前一个浏览的页面 back()方法,加载 history 列表中的前一个 URL。 语法: window.history.back();
返回前一个浏览的页面 back()方法,加载 history 列表中的前一个 URL. 语法: window.history.back(); 比如,返回前一个浏览的页面,代码如下: window.hi ...
- 6层PCB设计技巧和步骤
6层PCB设计技巧和步骤 一.原理图的编辑 6层板由于PCB板中可以有两层地,所以可以将模拟地和数字地分开.对于统一地还是分开地,涉及到电磁干扰中信号的最小回流路径问题,绘制完原理图,别忘检查错误和 ...