实验内容

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 密码学算法

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.处理计算结果



码云链接

实验过程中遇到的问题及解决方法

  • 问题一:编译DigestPass时,出现错误提示:非法字符:“\ufeff”
  • 问题一解决方法:在IDEA右下角,将编码改为GBK,再转为UTF-8,可以解决。

PSP

步骤 耗时/h 百分比
需求分析 0.5 10%
设计 2 40%
代码实现 1 20%
测试 1 20%
分析总结 0.5 10%

2018-2019-2 实验三 敏捷开发与XP实践的更多相关文章

  1. 2018-2019-20175205 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告

    2018-2019-20175205 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>&l ...

  2. 20175314 实验三 敏捷开发与XP实践

    20175314 实验二 Java面向对象程序设计 一.实验内容 XP基础 XP核心实践 相关工具 二.实验步骤 (一)代码格式化 创建"175314.exp3"项目,在该项目下创 ...

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

    一.实验三 敏捷开发与XP实践-1 1.实验要求 -实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成I ...

  4. 20165223 实验三 敏捷开发与XP实践

    目录 一.实验报告封面 二.具体实验内容 (一)敏捷开发与XP实践-1 代码规范格式化 (二)敏捷开发与XP实践-2 添加搭档项目 (三)敏捷开发与XP实践-3 搭档代码重构 (四)敏捷开发与XP实践 ...

  5. 20165323 实验三 敏捷开发与XP实践

    一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:杨金川 学号:20165323 指导教师:娄嘉鹏 实验日期:2018年4月28日 实验时间:13:45 - 15:25 实验序号:实验 ...

  6. 20165235 实验三 敏捷开发与XP实践

    20165235 实验三 敏捷开发与XP实践 主目录: 姓名:祁瑛 学号:20165235 班级:1652 实验课程:JAVA程序设计 实验名称:Java面向对象程序设计 实验时间:2018.4.30 ...

  7. 20172328《程序设计与数据结构》实验三 敏捷开发与XP实践报告

    20172328<程序设计与数据结构>实验三 敏捷开发与XP实践报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 李馨雨 学号:20172328 实验教师:王志强 ...

  8. 20165336 实验三 敏捷开发与XP实践

    20165336 实验三 敏捷开发与XP实践 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:康志强 学号:20165336 指导教师:娄嘉鹏 实验日期:2018年4月28日 实验时 ...

  9. 20165215 实验三 敏捷开发与XP实践

    20165215 实验三 敏捷开发与XP实践 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:张家佳 学号:20165215 指导教师:娄嘉鹏 实验日期:2018年4月28日 实验时 ...

  10. 2018-2019-2 20175306实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告

    2018-2019-2 20175306实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 1.没有Linux基础的同学建议先 ...

随机推荐

  1. HTML5--浏览器全屏操作、退出全屏、是否全屏

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. MySQL-第五篇视图

    1.视图看上去像是表,但它又不是,它并不能存储数据.视图只是一个或者多个表的逻辑显示.使用视图的好处: 1>可以限制对数据的访问 2>可以使复杂的查询变得简单 3>提供了数据的独立性 ...

  3. python------模块和包及异常处理

    一.模块 所有的模块导入都应该尽量往上写,且顺序为: a:内置模块 b:扩展模块 c:自定义模块 #my_module.py print('from the my_module.py') money= ...

  4. H Kuangyeye and hamburgers

    链接:https://ac.nowcoder.com/acm/contest/338/H来源:牛客网 题目描述 Kuangyeye is a dalao of the ACM school team ...

  5. jquery实现全选,反选,取消的操作

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. css样式表的引入方式

    一般来说,css 有两种样式表的引入方式,在这里我记录一下,比较这两种引入方式的区别: <link rel="stylesheet" type="text/css& ...

  7. A Tutorial on Using the ALSA Audio API

    A Tutorial on Using the ALSA Audio API This document attempts to provide an introduction to the ALSA ...

  8. 基于TMS320C6455、XC5VSX95T 的6U CPCI无线通信处理平台

    基于TMS320C6455.XC5VSX95T 的6U CPCI无线通信处理平台   1. 板卡概述 本板卡由我公司自主研发,基于CPCI架构,符合PICMG2.0 D3.0标准,包含双TI TMS3 ...

  9. python中单下划线(_)和双下划线(__)的特殊用法

    单下划线开头(_) 在模块中使用单下划线开头 模块中使用单下划线(_)开头定义函数.全局变量和类不能被模块外部以: from module import *形式导入. 但可以用:from module ...

  10. Java与C++对比

    Java的优势 Java是纯面向对象的,能够反映一切生活中的对象,编写程序更为容易. 平台无关性,“一次编译,到处运行”.(面试:为什么? 因为Java对每种数据类型分配的长度是固定的,但C++不是) ...