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%
原文地址:https://www.cnblogs.com/ltl123/p/8963949.html