zoukankan      html  css  js  c++  java
  • 20175209 实验三《敏捷开发与XP实践》实验报告

    20175209 实验三《敏捷开发与XP实践》实验报告

    一、实验内容

    • 编码标准:在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能。提交截图,加上自己学号水印。
    • 搭档代码检验:在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后git add .; git commit -m "自己学号 添加内容";git push;
    • 重构:完成重构内容的练习,下载搭档的代码,至少进行三项重构
    • 以结对的方式完成Java密码学相关内容的学习,结合重构,git,代码标准。

    二、实验步骤

    1.编码标准

    • alibaba的下载:如图所示进行下载,下载好后重启IDEA即可

    • 在要进行规范的目录右键选择 “编码规约扫描”开始扫描

    • 规范前给出的不规范内容提示如下:

    • 规范后的代码如下:

    Code菜单中的一些功能

    • Surround With ( 生成包围代码 )快捷键: Ctrl + Alt +T

    • Comment with Line Comment(注释某一行)快捷键:Ctrl + /

    • Comment with Block Comment(注释某一段)快捷键:Ctrl + Shift + /

    • Move Statement Down ( 方法、代码下移 ) 快捷键:Ctrl + Shift + 向下箭头

    • Move Statement Up ( 方法、代码上移 )快捷键: Ctrl + Shift + 向上箭头

    代码标准中很重要的一项是如何给包、类、变量、方法等标识符命名,Java中的一般的命名规则有:

    • 要体现各自的含义
    • 包、类、变量用名词
    • 方法名用动宾
    • 包名全部小写,如:io,awt
    • 类名第一个字母要大写,如:HelloWorldApp
    • 变量名第一个字母要小写,如:userName
    • 方法名第一个字母要小写:setName

    2.测试搭档代码

    权限获得
    • 首先登陆伙伴的码云仓库,在管理中选择仓库成员管理,—>添加仓库成员—>邀请用户,将链接发给自己,自己登陆连接后点击同意即可

    • 权限成功获得的截图如下

    • 搭档代码如下:

    对其中的所有方法均进行了测试

    • 测试代码
    import junit.framework.TestCase;
    public class lzcComplexTest extends TestCase {    
        lzccomplex a = new lzccomplex(3.0, 4.0);    
        lzccomplex b = new lzccomplex(-2.0, -3.0);    
        public void testEquals() {        
            assertEquals(true, a.equals(a));        
            assertEquals(false, b.equals(a));    
        }    
        public void testToString() {        
            assertEquals("3.0 + 4.0i", a.toString());        
            assertEquals("-2.0 - 3.0i", b.toString());    
        }    
        public void testComplexAdd() {        
            assertEquals("1.0 + 1.0i",a.complexAdd(b).toString());        
            assertEquals("-4.0 - 6.0i",b.complexAdd(b).toString());    
        }    
        public void testComplexSub() {        
            assertEquals("5.0 + 7.0i",a.complexSub(b).toString());        
            assertEquals("0",b.complexSub(b).toString());    
        }    
        public void testComplexMulti() {        
            assertEquals("-7.0 + 24.0i",a.complexMulti(a).toString());        
            assertEquals("6.0 - 17.0i",a.complexMulti(b).toString());    
        }    
        public void testComplexDiv() {        
            assertEquals("1.0",a.complexDiv(a).toString());    
        }
    }
    
    • 测试结果

    • 将测试好的代码上传至伙伴的码云

    3.重构

    • 重写方法加上@Override进行注解

    • 在代码前添加创建者的相关信息

    • 方法名、参数名、成员变量、局部变量都统一使用LowerCamelCase,必须遵从驼峰形式,重构前提示

    • 重构后

    4.Java密码学相关内容

    • 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平台上进行用户身份鉴别的功能。

    凯撒密码

    对凯撒密码进行了验证,并对代码进行了重构

    • 运行结果

    • 重构后结果

    Java对称加密—DES算法

    • 密钥的产生

    • 加密Hello World

    • 对密文进行解密

    Java非对称加密—RSA算法

    • 公私钥的产生

    • 加密Hello World

    • 对密文进行解密

    使用密钥协定创建共享密钥—DH算法

    • A和B分别产生自己的公钥和私钥

    • 创建共享密钥

    Java摘要算法—MD5

    三、实验中遇到的问题

    • 问题:在实现DH算法时,希望把用户A和B的产生的公钥和私钥分别存放至两个目录中,但实际上不能做到放至同一个包下,在out文件中运行时会自动存放至根目录下,无法真正实现博客中所说的个人用户的管理

    四、码云链接

    我的码云链接
    伙伴的码云链接

    四、总结

    本次实验主要目的是对以前写好的代码进行规范,在规范伙伴的的过程中体现出来很多自己在写代码时不严谨的地方,通过本次代码规范,让我对如何写好令人赏心悦目的代码有了更好的体会,相信自己以后会写出更多符合规范标准的代码

  • 相关阅读:
    JavaScript创建对象及对象继承
    Shell基础学习小结
    深入理解Java反射
    STL"源码"剖析-重点知识总结
    Java IO工作机制分析
    优先队列原理与实现
    CleanBlog(个人博客+源码)
    线性时间排序
    深入理解FTP协议
    Spring学习之AOP总结帖
  • 原文地址:https://www.cnblogs.com/wangzihong0213/p/10793473.html
Copyright © 2011-2022 走看看