20172316 2017-2018-2 《程序設計與數據結構》 實驗三報告

課程:《程序設計與數據結構》
班級: 1723
姓名: 趙乾宸
學號:20172316
實驗教師:王志強
必修/選修:必修php


1.實驗內容

敏捷開發與XP實踐html

  • (1)代碼規範
  • (2)協同測試
  • (3)重構
  • (4)密碼學應用

2. 實驗過程及結果

(1)代碼規範:

針對下面的代碼進行操做:java

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));
}
}

首先安裝alibaba 插件,實現代碼從新格式化
獲得git

/**
 * CodeStandard class 
 * 
 * @author 趙乾宸
 * @date 2018/05/16
 */
public class CodeStandard {
    public static void main(String[] args) {
        final int maxCapacity = 20;
        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() < maxCapacity) {
            buffer.append("1234567");
        }
        for (int i = 0; i < buffer.length(); i++) {
            System.out.println(buffer.charAt(i));
        }
    }
}

--->研究Code菜單,找出感受最好的功能,我最喜好的是Move Statement Down,Move Statement Up這兩個能夠將光標所在的statement(語句塊?)向上或向下挪動。web

-->藍墨雲地址<--算法


(2)協同測試

取用20172329王文彬同窗的代碼Mycomplex.java進行測試,測試完畢後git log以下:數據結構

import org.junit.Test;

import static org.junit.Assert.*;

public class MyComplexTest {
    static MyComplex com1 = new MyComplex(1, 1);
    static MyComplex com2 = new MyComplex(1, 1);
    static MyComplex com3 = new MyComplex(2, 2);
    static MyComplex com4 = new MyComplex(0 ,0);
    static MyComplex com5 = new MyComplex(1, 0);
    static MyComplex com6 = new MyComplex(0, 2);

    @Test
    public void equals() throws Exception{
        assertEquals(com1.equals(com2), true);
    }

    @Test
    public void complexAdd() throws Exception{
        assertEquals(com1.ComplexAdd(com2).toString(), com3.toString());
    }

    @Test
    public void complexSub() throws Exception{
        assertEquals(com1.ComplexSub(com2).toString(), com4.toString());
    }

    @Test
    public void complexMulti() throws Exception{
        assertEquals(com1.ComplexMulti(com2).toString(), com6.toString());
    }

    @Test
    public void complexDiv() throws Exception{
        assertEquals(com1.ComplexDiv(com2).toString(), com5.toString());
    }

}

碼雲地址爲https://gitee.com/CS-IMIS-23/20172327wwb/blob/master/Test/exp/MyComplexTest.javaapp

-->藍墨雲地址<--學習

(3)重構

對同窗代碼進行三項重構,
第一個:pp23.java,對其求商的變量名進行重構。測試

第二個:homework2.java, 對其文件名進行重構。

第三個:Cow.java,將其中幾個父類封裝過的變量引用重構爲getter。

防止出現意外錯誤,結果沒有上傳至王文彬碼雲,但藍墨雲有重構後詳細截圖

-->藍墨雲地址<--

(4)密碼學應用

參考http://www.cnblogs.com/rocedu/p/6683948.html以結對的方式完成Java密碼學相關內容的學習,結合重構,git,代碼標準。

凱撒密碼

成果:

Java對稱加密-DES算法

成果:

Java非對稱加密-RSA算法

成果:

使用密鑰協定建立共享密鑰

成果:

Java摘要算法- MD5

成果:

-->藍墨雲地址<--


3. 實驗過程當中遇到的問題和解決過程

  • 問題1:代碼不符合格式(alibaba的),特別是建立者信息部分,改了幾回不行
  • 問題1解決方案:一直改動,其中還嘗試了教科書上的格式
//*******************************************************************
//  CodeStandard.java       Author: ZhaoQianchen
//
//  A standard of code.
//*******************************************************************

沒有效果,查看了Inspection Result信息以後,發現alibaba代碼規範的這一部分的格式十分嚴格必須如出一轍,像這樣:

/**
 * CodeStandard class
 *
 * @author 趙乾宸
 * @date 2018/05/16
 */

  • 問題2:從同窗碼雲上clone下來的程序修改後push不上
  • 問題2解決方案:根據IDEA的提示,進行merge(合併),雖然不太懂,以前一直覺得合併會發生文件還原的現象,致使本身的測試類被刪除,一直不敢點擊。不過點完以後仍是沒什麼問題,成功上傳。

------

其餘(感悟、思考等)

參考資料

《Java程序設計與數據結構教程(第二版)》
《Java程序設計與數據結構教程(第二版)》學習指導
《Intellj IDEA 簡易教程》
《實驗三 敏捷開發與XP實踐》

相關文章
相關標籤/搜索