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

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

  • 課程:《程序設計與數據結構》
  • 班級: 1723
  • 姓名: 範雯琪
  • 學號:20172303
  • 實驗教師:王志強
  • 助教:張旭升/劉偉康
  • 實驗日期:2018年5月10日
  • 必修/選修: 必修

實驗內容

敏捷開發與XP實踐html

  • 1.安裝alibaba程序並運行,解決代碼規範
  • 2.複習JUnit單元測試
  • 3.使用編碼規範掃描規範結對夥伴的代碼
  • 4.結合重構與結對夥伴共同窗習密碼學相關內容

實驗過程及結果

(一)代碼規範

要求:參考IDEA 簡易教程安裝alibaba 插件,解決代碼中的規範問題。java

1.安裝alibaba插件

打開IDEA,在任務欄中打開Settings → Plugins → Browse repositories。在界面的搜素欄中alibaba,找到Alibaba Java Code Guidelines插件,點擊Install進行安裝。git

2.代碼規範:使用編碼規範掃描對老師所給代碼進行規範。

原代碼:程序員

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

修改後代碼:算法

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

3.在IDEA中使用工具(Code->Reformate Code)把代碼從新格式化,並研究一下Code菜單。

IDEA的Code菜單以下:

經常使用功能總結:數據結構

  • Override Methods:重載基本類的方法。
  • Implement Methods:完成當前類中接口的方法。
  • Surround With:使用if-else、try-catch、do-while等包裝代碼段。
  • Comment with Line Comment/Comment with Block Comment:將選定代碼變爲註釋或將選定註釋從新變爲代碼。
  • Reformat Code:使代碼按標準格式縮進。

(二)JUnit測試

要求:下載搭檔實驗二的Complex代碼,加入很多於三個JUnit單元測試用例。app

  • 搭檔的Complex代碼:
  • 進行JUnit單元測試,共測試了四個方法:ComplexAdd(),ComplexSub(),ComplexMulti(),ComplexDiv().
  • 測試代碼:

(三)重構練習

要求:完成重構內容的練習,下載搭檔的代碼,至少進行三項重構。ide

  • 重構(Refactor):指程序員對已有程序在儘可能不改變接口的前提下,進行從新編寫代碼的工做。
  • Java代碼的重構模式主要有三種:重命名方法重構模式、引入解釋性變量重構模式、以查詢取代臨時變量重構模式
    • 重命名方法重構模式建議執行以下的步驟來完成:
      1.創建一個具備新名稱的方法
      2.將舊方法的方法體複製進新方法
      3.講舊方法的方法體修改成調用新方法
      4.將全部引用舊方法的地方修改成引用新方法
      5.刪除舊方法
    • 引入解釋性變量重構模式步驟相對簡單,以下:
      1.聲明一個局部變量,並將其初始化爲須要替換的表達式部分
      2.對於複雜的表達式,用新的局部變量代替其中須要替換的部分
      3.對於該表達式的其餘部分,重複這個過程
    • 以查詢取代臨時變量重構模式的步驟以下:
      1.找出只賦值了一次的局部變量
      2.將該局部變量聲明爲final並從新編譯(以確保該變量的確只賦值了一次)
      3.複製賦值語句的等號右側的表達式,並將其修改成一個新方法的方法體
      4.將賦值語句的等號右側更改成對新方法的調用
      5.將全部對該局部變量的使用替換爲對新方法的調用
      6.刪除賦值語句以及局部變量的聲明
  • 搭檔原代碼:
import java.util.Scanner;
public class Pig { public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int a = 1;
        int MaxPig = 10;
        int Pig;
        System.out.println("prprpr!");
        System.out.println("噗噗噗噗!!!!");
        System.out.println("bulabula");
        if (a>1) a--;
        System.out.println("請你輸入一隻Pig的大小:");
        Pig = scan.nextInt();
        if(Pig>MaxPig) System.out.println("你這隻豬太大啦!!!!!");
        else System.out.println("你這隻豬剛恰好!!!!!"); }
}
  • 修改後:

(四)密碼學相關

要求:參考Java 密碼學算法,結合重構,以結對的方式完成Java密碼學相關內容的學習。工具

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

  • 問題1:如何在IDEA裏看git的commit信息?
  • 問題1解決方法:在IDEA的下標欄中選擇Verison Control,以後點擊log便可。

其餘(感悟、思考等)

本週學習了不少很重要的新內容——重構、代碼規範和密碼學相關內容的代碼實現,由於本學期選修了密碼科技史這門選修,因此密碼學裏的不少內容都是瞭解的,看起來作起來就相對沒那麼難。而代碼規範是我以爲本次實驗學的最有意義的事情,對於一個強迫症來講,有一個東西能幫我把代碼的編寫規範好真是太太太太太太太太棒了!!!!!!!!!單元測試

參考資料

相關文章
相關標籤/搜索