实验三 敏捷开发与XP实践

实验三 敏捷开发与XP实践

课程:JAVA程序设计

班级:1652班

姓名:丁奕

学号:20165211

指导教师:娄嘉鹏

实验日期:2018.4.28

实验名称:敏捷开发与XP实践

实验内容及要求:1.安装alibaba 插件,解决代码中的规范问题。

2. 在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例

3. 完成重构内容的练习

具体实验步骤及问题

(一)安装alibaba 插件,解决代码中的规范问题。

alibaba插件安装:Setting->Plugins->Brows repositories...->搜索alibaba->Install安装

完成后效果:

1043647-20180507110121225-2134205787.png

代码规范:

1043647-20180507110147984-873619282.png

Code--->Reformat Code将代码格式标准化,代码效果如下:

1043647-20180507110206821-557530514.png

觉得最方便的功能:Code->Generate,可以直接新建文件(如下图),也可以在文件中新建代码

1043647-20180507110224188-812076110.png

(二) 在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例

同伴代码
1043647-20180507110242558-635064688.png

已添加的测试用例
1043647-20180507110258354-1353355011.png

提交过程:

Git--->Commit File
1043647-20180507110319309-337964931.png

1043647-20180507110332690-1588814873.png

(三)完成重构内容的练习

重构的定义:重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。

那哪些地方需要重构呢?就是有臭味道(Bad Smell)的代码。

在IDEA中也有一个refactor菜单
1043647-20180507110353418-1665202664.png

较为典型的就是重复的代码Duplicated Code,下图是我摘录的图片

å¾çæè¿°ä¿¡æ¯

对同伴的代码进行代码重构:

重构前代码展示:
1043647-20180507110403840-1837586707.png

发现的代码问题有:

  1. 代码格式不规范
  2. 命名不符合规定
  3. if-else讨论中,顺序不符合思考逻辑

重构后代码效果
1043647-20180507110413518-605828036.png

(四)密码学题目练习

我和同伴参考了老师的博客后,决定选择MD5作为尝试的代码进行加密。Md5加密是一种极为安全的加密方法,本来以为会有很大的难度。但在老师的博客中已经给出了详细的过程

java.security包中的MessageDigest类提供了计算消息摘要的方法,

首先生成对象,生成MessageDigest对象MessageDigest m=MessageDigest.getInstance("MD5");

执行其update()方法可以将原始数据传递给该对象传入需要计算的字符串
m.update(x.getBytes("UTF8" ));

然后执行其digest( )方法即可得到消息摘要, 计算消息摘要
byte s[ ]=m.digest( );

处理计算结果

string result=""; String result=""; for (int i=0; i<s.length; i++){ result+=Integer.toHexString((0x000000ff & s[i]) | 0xffffff00).substring(6); }

以下是我们编写的代码:

import java.security.MessageDigest;

public class MD5 {
    public static String MD5(String key) throws Exception {
        byte[] cipher = key.getBytes();
        MessageDigest clear = MessageDigest.getInstance("MD5");
        clear.update(cipher);
        byte s[] = clear.digest();
        StringBuffer str = new StringBuffer();
        for (int i = 0; i < s.length; i++) {
            int a = ((int) s[i]) & 0xff;
            if (a < 16) {
                str.append("0");
            }
            str.append(Integer.toHexString(a));
        }
        return str.toString();
    }

    public static void main(String args[]) throws Exception {
        String str1 = new String("dingyi");
        System.out.println("原始:" + str1);
        System.out.println("MD5后:" + MD5(str1));
        String str2 = new String("kongyue");
        System.out.println("原始:" + str2);
        System.out.println("MD5后:" + MD5(str2));
        String str3 = new String("abc");
        System.out.println("原始:" + str3);
        System.out.println("MD5后:" + MD5(str3));
    }
}

实验心得及体会

在本次实验中,我认识到了代码的规范性的重要。在现实中,好的代码的功能效率都会大大增加,在代码规范性的实验中,我也认识到了,自己将之前写C的代码时习惯带进了Java的编写中,很多时候,代码格式就不规范了,在之后要积极矫正。

在本次实验中,我还认识到了,在Java的学习中,团队协作是有很大作用的。在跟队友一起编写代码时,我的队友会提出一些我没有想到过的问题,打开我们的知识盲点,一步一步的探索,也是很有意义的。

步骤耗时百分比
需求分析15min11.1%
设计30min22.2%
代码实现45min33.3%
测试20min14.8%
分析总结25min18.5%

转载于:https://www.cnblogs.com/akashi/p/9000320.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值