20155327 实验三 敏捷开发与XP实践
20155327 实验三 敏捷开发与XP实践
实验内容
任务一
参考 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));
}
}
编码标准
编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。
Java中的一般的命名规则:
要体现各自的含义
包、类、变量用名词
方法名用动宾
包名全部小写,如:io,awt
类名第一个字母要大写,如:HelloWorldApp
变量名第一个字母要小写,如:userName
方法名第一个字母要小写:setName
实验步骤
1.打开IDEA,在Settings → Plugins → Browse repositories...中的搜索框输入alibaba
看到Alibaba Java Code Guidelines插件,点击Install进行安装,然后重启IDE生效
2.新建类:CodeStandard.java,输入题目给出的代码
使用工具 Code → Reformate Code ,按提示修改并格式化代码
3.了解Code菜单功能
几个比较常用的功能总结如下:
- Override Methods(Ctrl+O):重载基本类的方法;
- Implement Methods(Ctrl+I):完成当前类 implements 的(或者抽象基本类的)接口的方法;
- Generate(Alt+Insert):创建类里面任何字段的 getter 与 setter 方法;
- Surround With(Ctrl+Alt+T):使用if-else、try-catch、do-while等包装代码段;
- Insert Live Template(Ctrl-J):执行一些记不起来的 Live Template 缩写;
- Comment with Line Comment(Ctrl+斜杠)/Comment with Block Comment(Ctrl+Shift+斜杠):用 Ctrl+斜杠 与 Ctrl-Shift-/ 来注释(或反注释)代码行与代码块。 用- Ctrl+斜杠单行注释标记(“ //… ”)来注释(或反注释)当前行或者选择地代码块。而 Ctrl+Shift+斜杠则可以用块注释标记(“ /* */”)把所选块包围起来。要反注释一个代码块就在块中任何一个地方按 Ctrl+Shift+斜杠 即可;
- Reformat Code(Ctrl+Alt+L):将代码按标准格式缩进;
二、敏捷开发与XP
结对编程是XP中的重要实践。在结对编程模式下,一对程序员肩并肩、平等地、互补地进行开发工作。他们并排坐在一台电脑前,面对同一个显示器,使用同一个键盘、同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起做单元测试,一起做集成测试,一起写文档等。
任务二
码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后git add .; git commit -m "自己学号 添加内容";git push;
提交搭档项目git log的截图,包含上面git commit的信息,并加上自己的学号水印信息。
实验步骤
1.下载Complex代码加入单元测试用例
Complex代码:
public class Complex {
// 定义属性并生成getter,setter
double RealPart;
double ImagePart;
// 定义构造函数
public Complex(double R, double I) {
this.RealPart = R;
this.ImagePart = I;
}
;
public Complex() {
}
;
//Override Object
/*public boolean equals(Object obj){
}
public String toString();
//Override Object
public boolean equals(Object obj)
public String toString()*/
}
class FourOperations{
// 定义公有方法:加减乘除
//Complex a = new Complex();
// Complex b = new Complex();
Complex ComplexAdd(Complex a,Complex b){
Complex answer=new Complex();
answer.RealPart=a.RealPart+b.RealPart;
answer.ImagePart=a.ImagePart+b.ImagePart;
return answer;
}
Complex ComplexSub(Complex a,Complex b){
Complex answer=new Complex();
answer.RealPart=a.RealPart-b.RealPart;
answer.ImagePart=a.ImagePart-b.ImagePart;
return answer;
}
Complex ComplexMulti(Complex a,Complex b){
Complex answer=new Complex();
answer.RealPart=(a.RealPart*b.RealPart)-(a.ImagePart*b.ImagePart);
answer.ImagePart=(a.RealPart*b.ImagePart)+(a.ImagePart*b.RealPart);
return answer;
}
Complex ComplexDiv(Complex a,Complex b){
Complex answer=new Complex();
double fenmu = b.RealPart*b.RealPart+b.ImagePart+b.ImagePart;
answer.RealPart=(a.RealPart*b.RealPart+a.ImagePart*b.ImagePart)/fenmu;
answer.ImagePart=(a.ImagePart*b.RealPart-a.RealPart*b.ImagePart)/fenmu;
return answer;
}
}
单元测试代码
import org.junit.Test;
import static org.junit.Assert.*;
public class ComplexTest {
@Test
public void testComplexAdd() throws Exception {
assertEquals(5,2+3);
System.out.println();
}
@Test
public void testComplexSub() throws Exception {
assertEquals(6,9 - 3);
}
@Test
public void testComplexMulti() throws Exception {
assertEquals(6,2 * 3);
}
@Test
public void testComplexDiv() throws Exception {
assertEquals(2,6 / 3);
}
}
2.截图如下
任务三:
完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。
重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。
目的:
增加新功能;
原有功能有BUG;
改善原有程序的结构;
优化原有系统的性能 。
实验截图:
修改后的代码:
任务四:
1.参考《Java 密码学算法》,以结对的方式完成Java密码学相关内容的学习,结合重构,git,代码标准。
2.提交学习成果码云链接和代表性成果截图,要有学号水印。
Java安全体系结构总共分为4个部分:
JCA( Java Cryptography Architecture, Java加密体系结构):JCA提供基本的加密框架, 如证书、 数字签名、消息摘要和密钥对产生器。
JCE( Java Cryptography Extension, Java加密扩展包):JCE在JCA的基础上作了扩展, 提供了各种加密算法、 消息摘要算法和密钥管理等功能。JCE的实现主要在javax.crypto包( 及其子包) 中
JSSE( Java Secure Sockets Extension, Java安全套接字扩展包):JSSE提供了基于SSL( Secure Sockets Layer,安全套接字层) 的加密功能。 在网络的传输过程中, 信息会经过多个主机(很有可能其中一台就被窃听) , 最终传送给接收者, 这是不安全的。这种确保网络通信安全的服务就是由JSSE来提供的。
JAAS( Java Authentication and Authentication Service, Java鉴别与安全服务):JAAS提供了在Java平台上进行用户身份鉴别的功能。
大致了解了MD5算法需要用到的方法框架后,编写了伪代码:
/**
伪代码:
MD5算法:把一个任意长度的字节串变换成一定长的十六进制数字串
具体步骤:(1)生成MessageDigest对象
(2)传入需要计算的字符串
(3)计算消息摘要
(4)处理计算结果
/
产品代码:
import java.security.MessageDigest;
public class DigestPass{
public static String md5Encode(String inStr) throws Exception {
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance("MD5");
} catch (Exception e) {
System.out.println(e.toString());
e.printStackTrace();
return "";
}
byte[] byteArray = inStr.getBytes("UTF-8");
byte[] md5Bytes = md5.digest(byteArray);
StringBuffer hexValue = new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++) {
int val = ((int) md5Bytes[i]) & 0xff;
if (val < 16) {
hexValue.append("0");
}
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
}
}
测试代码]:
public static void main(String args[]) throws Exception {
String str = new String("amigoxiexiexingxing");
System.out.println("原始:" + str);
System.out.println("MD5后:" + md5Encode(str));
}
实验体会与总结
1.版本控制的好处
(1)版本控制提供项目级的 undo(撤销)功能:没有什么事情是终结版本,任何错误必须很容易回滚。
(2)版本控制允许多人在同一代码上工作,只要遵守一定的控制原则就行。
(3)版本控制系统保存了过去所作的修改的历史记录。
(4)版本控制系统支持在主线上开发的同时发布多个软件版本。
(5)版本控制也是项目级的时间机器,你可以选择任何一个时间, 精确地查看项目在当时的情况。
2.重构(Refactor):就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更。
修改方法是:用鼠标单击要改的名字,选择Eclipse中菜单中的Refactor->Rename...
20155327 实验三 敏捷开发与XP实践的更多相关文章
- 20145213《Java程序设计》实验三敏捷开发与XP实践
20145213<Java程序设计>实验三敏捷开发与XP实践 实验要求 1.XP基础 2.XP核心实践 3.相关工具 实验内容 1.敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法 ...
- 20145308刘昊阳 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20145308刘昊阳 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...
- JAVA课程实验报告 实验三 敏捷开发与XP实践
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:韩玉琪 学号:20135317 成绩: 指导教师:娄嘉 ...
- 20145225《Java程序设计》 实验三 "敏捷开发与XP实践"
20145225<Java程序设计> 实验三 "敏捷开发与XP实践" 实验报告 实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 git 上 ...
- 20145215实验三 敏捷开发与XP实践
20145215实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软 ...
- 20145325张梓靖 实验三 "敏捷开发与XP实践"
20145325张梓靖 实验三 "敏捷开发与XP实践" 程序设计过程 实验内容 使用 git 上传代码 git上传中遇到的问题 使用 git 相互更改代码 实现代码的重构 git ...
- 20162311 实验三 敏捷开发与XP实践 实验报告
20162311 实验三 敏捷开发与XP实践 实验报告 实验内容 一.研究学习IDEA中的Code菜单 使用Code ->Reformate Code功能将以下代码格式化 public clas ...
- 2018-2019-20175205 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告
2018-2019-20175205 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>&l ...
- 20175314 实验三 敏捷开发与XP实践
20175314 实验二 Java面向对象程序设计 一.实验内容 XP基础 XP核心实践 相关工具 二.实验步骤 (一)代码格式化 创建"175314.exp3"项目,在该项目下创 ...
随机推荐
- 如何忽略.gitignore文件的提交
1.默认的.gitignore文件无法忽略,如果想要忽略可以把.gitignore里面的文件转移到项目下面的 .git/info/exclude 里面, 2..gitignore可以直接使用插件,参照 ...
- [转]How do you build a database?
非常简短的文字,却异常明了的说明了一个数据库管理系统的核心原理,原文来自原文. Its a great question, and deserves a long answer. Most datab ...
- 使用 PowerShell 创建 Linux 虚拟机
Azure PowerShell 模块用于从 PowerShell 命令行或脚本创建和管理 Azure 资源. 本指南详细介绍了如何使用 Azure PowerShell 模块部署运行 Ubuntu ...
- 洛谷P1064 金明的预算方案
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱就行”. ...
- iframe内联框
内联框中表格的下划线老是显示不出来,设置宽度百分比不起作用,调整了文本域的宽度也不行.只能动态调整iframe的高度.
- [翻译] UCZProgressView
UCZProgressView UCZProgressView is a circular progress indicator with cool animations for image load ...
- [翻译] TGLStackedViewController
TGLStackedViewController A stack layout with gesture-based reordering using UICollectionView -- insp ...
- Springboot+RestTemplate 简单使用
spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只需要传入url及返回值 ...
- 关于markdown格式的测试..
标题 标题一 这是? 标题二 标题三 标题四 区块 1.这是一个列表项目 还是吗? 嵌套了? 空格了? 区块加列表 标题加二级列表 嘿嘿 无序列表 RED GREEN BLUE 有序列表 dog ca ...
- python subprocess 和 multiprocess选择以及我遇到的坑
The subprocess option: subprocess is 用来执行其他的可执行程序的,即执行外部命令. 他是os.fork() 和 os.execve() 的封装. 他启动的进程不会把 ...