20145207 《Java 程序设计》实验三 (敏捷开发与XP实践)实验报告
2017-05-06 23:14
447 查看
《Java 程序设计》实验三 (敏捷开发与XP实践)实验报告
目录
改变敏捷开发与XP实践实验要求
实验成果
课后思考
改变
修改了之前仅仅是贴了图片,连代码都没粘的状态。增加了自己的思考以及做实验的过程以及代码的详细内容。最后:这些都是我重新做了一遍的结果。敏捷开发与XP实践实验要求
一、编码标准任务一:在IDEA中使用工具(Code->Reformate Code)格式化代码,并学习Code菜单的功能
二、敏捷开发与XP
任务二:下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例
三、重构
任务三:下载搭档的代码,至少进行三项重构
附:练习
任务四:以结对的方式完成Java密码学相关内容的学习,结合重构、git、代码标准等
实验成果
一、编码标准
编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。规定的规范缩进:
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)); } }
代码没有层次感,快捷键Reformate 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
任务一:在IDEA中使用工具(Code->Reformate Code)格式化代码,并学习Code菜单的功能
IDEA中的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等包装代码段;
二、敏捷开发与XP
结对编程是XP中的重要实践。在结对编程模式下,一对程序员肩并肩、平等地、互补地进行开发工作。他们并排坐在一台电脑前,面对同一个显示器,使用同一个键盘、同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起做单元测试,一起做集成测试,一起写文档等。任务二:下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例
直接下的其他人的代码进行测试三、重构
重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。我们要修改软件,万变不离其宗,无非就是四种动机:
增加新功能;
原有功能有BUG;
改善原有程序的结构;
优化原有系统的性能 。
IDEA主要提供了以下重构功能:(附加:我重构用的最好,改别人代码在自己上面的名字用重构不要太方便)
那么,哪些地方需要重构呢?有臭味道(Bad Smell)的代码。这个概念非常宽泛,不仅包括代码重复,还有方法过长、参数列过长、条件逻辑过度复杂、分支语句等等方面。通过重构,我们可以实现代码的优化。
任务三:下载搭档的代码,至少进行三项重构
进行如下修改重构代码如下:
课后思考
自己增加的练习部分: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算法,以结对的方式完成了代码编写的工作。
首先,我们一起学习了
java.security包中的
MessageDigest类,以及类中的方法,包括
update()、
digest()等。
大致了解了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)); }
遇到的问题:
IDEA错误:错误: 非法字符: '\ufeff' 解决方案|错误: 需要class, interface或enum
这是因为:IDEA可以自动把UTF-8+BOM文件转为普通的UTF-8文件,但Android Studio需要重新转一下。所以需要将编码格式UTF-8+BOM文件转为普通的UTF-8文件。
解决方法为:在右下角,将编码改为GBK,再转为UTF-8即可。
学习反思及总结
平时写的博客确实不够认真,实验全部重新修改,以上。标签: Java学习笔记
相关文章推荐
- Java课程实验报告 实验三 敏捷开发与XP实践
- JAVA课程实验报告 实验三 敏捷开发与XP实践
- 20135231 JAVA实验报告三:敏捷开发与XP实践
- 20155337 《Java程序设计》实验三(敏捷开发与XP实践)实验报告
- 第三次实验报告 敏捷开发与XP实践
- 实验三 敏捷开发与XP实践 实验报告
- 20155226 实验三 敏捷开发与XP实践 实验报告
- 20145221 《Java程序设计》实验报告三:敏捷开发与XP实践
- 实验三 敏捷开发与XP实践 实验报告 20135232王玥
- 20145308刘昊阳 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
- 2016-2017-2 20155339 《Java面向对象程序设计》实验三敏捷开发与XP实践实验报告
- 20155328 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
- 20145203盖泽双java实验三 敏捷开发与XP实践
- 实验三 Java敏捷开发与XP实践
- 20145211 《Java程序设计》实验报告三:敏捷开发与XP实践
- 第三次实验报告 敏捷开发与XP实践
- 20155117王震宇 实验三 敏捷开发与XP实践 实验报告
- java实验三 敏捷开发与XP实践
- 20145205 《Java程序设计》实验报告三:敏捷开发与XP实践
- 20155205 《Java程序设计》实验三(敏捷开发与XP实践)实验报告