• 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%
  • 相关阅读:
    数学+高精度 ZOJ 2313 Chinese Girls' Amusement
    最短路(Bellman_Ford) POJ 1860 Currency Exchange
    贪心 Gym 100502E Opening Ceremony
    概率 Gym 100502D Dice Game
    判断 Gym 100502K Train Passengers
    BFS POJ 3278 Catch That Cow
    DFS POJ 2362 Square
    DFS ZOJ 1002/HDOJ 1045 Fire Net
    组合数学(全排列)+DFS CSU 1563 Lexicography
    stack UVA 442 Matrix Chain Multiplication
  • 原文地址:https://www.cnblogs.com/ltl123/p/8963949.html
Copyright © 2020-2023  润新知