• 实验三 敏捷开发与XP实践


    实验三 敏捷开发与XP实践

    课程:JAVA程序设计

    班级:1652班

    姓名:丁奕

    学号:20165211

    指导教师:娄嘉鹏

    实验日期:2018.4.28

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

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

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

    3. 完成重构内容的练习

    具体实验步骤及问题

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

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

    完成后效果:

    代码规范:

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

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

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

    同伴代码

    已添加的测试用例

    提交过程:

    Git--->Commit File

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

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

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

    在IDEA中也有一个refactor菜单

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

    图片描述信息

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

    重构前代码展示:

    发现的代码问题有:

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

    重构后代码效果

    (四)密码学题目练习

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

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

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

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

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

    处理计算结果

    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的学习中,团队协作是有很大作用的。在跟队友一起编写代码时,我的队友会提出一些我没有想到过的问题,打开我们的知识盲点,一步一步的探索,也是很有意义的。

    步骤 耗时 百分比
    需求分析 15min 11.1%
    设计 30min 22.2%
    代码实现 45min 33.3%
    测试 20min 14.8%
    分析总结 25min 18.5%
  • 相关阅读:
    P1032 字串变换
    P3203 [HNOI2010]弹飞绵羊
    P3690 【模板】Link Cut Tree (动态树)
    P2147 [SDOI2008]洞穴勘测
    P3950 部落冲突
    Codeforces Round #469 Div. 2题解
    线段树
    SDOI2018退役记
    4.1模拟题
    无旋Treap
  • 原文地址:https://www.cnblogs.com/akashi/p/9000320.html
Copyright © 2020-2023  润新知