zoukankan      html  css  js  c++  java
  • 20165334 实验三 敏捷开发与XP实践

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

    一、规范代码

    读了娄老师的博客我对规范代码的理解是,代码的格式要有层次感、代码中给包、类、变量、方法等标识符命名要有规范、易懂性。

    //没有规范前
    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));
    }
    }
    

    代码规范后

    Code菜单的功能学习

    • Override Methods(Ctrl+O)重载基本类的方法;
    • Generate(Alt+Insert)创建类里面任何字段的 getter 与 setter 方法;
    • Implement Methods(Ctrl+I)完成当前类 implements 的(或者抽象基本类的)接口的方法;
    • Reformat Code(Ctrl+Alt+L)将代码按标准格式缩进;

    二、下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例

    搭档的Complex产品代码如下

     class Complex {
         private double r;
         private double i;
    
         public Complex(double r, double i) {
             this.r = r;
             this.i = i;
         }
         public static double getRealPart(double r) {
             return r;
         }
         public static double getImagePart(double i) {
             return i;
         }
    
         public Complex ComplexAdd(Complex a) {
             return new Complex(r + a.r, i + a.i);
         }
    
         public Complex ComplexSub(Complex a) {
             return new Complex(r - a.r, i - a.i);
         }
         public Complex ComplexMulti(Complex a) {
             return new Complex(r * a.r - i * a.i , r * a.i + i * a.r);
         }
         public Complex ComplexDiv(Complex a) {
             return new Complex((r * a.i + i * a.r) / (a.i * a.i + a.r * a.r), (i * a.i + r * a.r) / (a.i * a.i + a.r * a.r));
         }
         public String toString() {
             String s =" ";
             if (i > 0)
                 s =r +"+"+ i +"i";
             if (i == 0)
                 s =r+"";
             if (i < 0)
                 s = r +" "+ i+"i";
             return s;
         }
     }
    

    我做的测试代码截图如下

    git log截图如下

    三、完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。

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

    以上代码结构存在以下问题

    • 类名不符合命名规则;
    • 常量不不符合代码规范;
    • else中的语句应该有括号;
    修改后如图所示

    搭档的码云链接

    四、以结对的方式完成Java密码学相关内容的学习,结合重构、git、代码标准等

    同过和搭档学习Java密码学相关内容,我们学习了Java对称加密-DES算法
    学习成果如下

    图中运行结果第一行为Nice to meet you字节数组编码方式
    第二行为第二行为加密后的内容,第二行的内容会随着密钥的不同而不同。

    同时我们用java实现了密码学Vigenere密码算法,成果如下截图

    代码码云链接

    五实验中遇到的问题

    问题:

    设置创建者信息时总是出现格式错误

    解决办法

    设置一个创建者信息模板如图所示

    六、实验总结与体会

    通过这次实验让我再一次体会到团队的力量,思维碰撞的火花,结对学习让学习效率得到提高,两个人长短互补,而且督促双方学习,有效学习的时间变长。
    通过编码规范体会到程序员对完美的追求,通过java与密码学的学习体会到java的伟大。

    PSP(Personal Software Process)时间
    步骤 耗时 百分比
    需求分析 12min 12%
    设计 26min 18%
    代码实现 42min 30%
    测试 30min 32%
    分析总结现 10min 8%
  • 相关阅读:
    Linux常用的命令
    【练习】分区
    【测试】RAC搭建(裸设备)
    【练习】使用事务和锁定语句
    【练习】使用事务控制语句
    【练习】设置数据类型
    【练习】显示MySQLadmin 库户籍选项
    【练习】显示MYSQL客户机选项
    【练习】如何显示本地主机上的MySQL客户机版本
    【测试】切换保护模式,最大性能到最大可用
  • 原文地址:https://www.cnblogs.com/ltl123/p/8963949.html
Copyright © 2011-2022 走看看