1. 程式人生 > >2018-2019-2 20175126謝文航 實驗三《敏捷開發與XP實踐》實驗報告

2018-2019-2 20175126謝文航 實驗三《敏捷開發與XP實踐》實驗報告

有用 complex 包導入 彈出菜單 幸運 stand 回滾 system let

一、實驗報告封面

    • 課程:Java程序設計 班級:1751 班 姓名:謝文航 學號:20175126
    • 指導教師:婁嘉鵬 實驗日期:2019年5月2日
    • 實驗時間:--- 實驗序號:實驗三
    • 實驗名稱:敏捷開發與XP實踐
    • 實驗內容
    • 1. XP基礎

      2. XP核心實踐

      3. 相關工具

      實驗要求

      1.沒有Linux基礎的同學建議先學習《Linux基礎入門(新版)》《Vim編輯器》 課程

      2.完成實驗、撰寫實驗報告,實驗報告以博客方式發表在博客園,註意實驗報告重點是運行結果,遇到的問題(工具查找,安裝,使用,程序的編輯,調試,運行等)、解決辦法(空洞的方法如“查網絡”、“問同學”、“看書”等一律得0分)以及分析

      (從中可以得到什麽啟示,有什麽收獲,教訓等)。報告可以參考範飛龍老師的指導

      3. 嚴禁抄襲,有該行為者實驗成績歸零,並附加其他懲罰措施。

二、實驗內容

(一)編碼標準

實驗步驟:

1.安裝插件alibaba

技術分享圖片

2.在項目名稱上單擊右鍵,在彈出菜單上選擇編碼規約掃描

技術分享圖片

技術分享圖片

3.在IDEA中使用工具(Code->Reformate Code)把下面代碼重新格式化

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

  技術分享圖片

3.2右擊文件,找到格式化代碼

技術分享圖片

技術分享圖片

4.研究Code菜單,找出一項讓自己感覺最好用的功能

Code菜單:

  • Override Methods ( 重寫覆蓋方法 ) Ctrl + O
  • Implements Methods ( 實現接口方法 ) Ctrl + I
  • Gengrate ( 用於生成Construct、Getter/Setter、toString等) Alt + Insert
  • Surround With (使用if-else、for、while等語句包裝代碼段) Ctrl+Alt+T

  • SmartType ( 智能選擇並實現 ) Ctrl + Shift + 空格
  • Cyclic Expand Word ( 循環往上選擇單詞 ) Alt + /
  • Cyclic Expand Word (Backwrad)( 循環往下選擇單詞 ) Alt + Shift + /
  • Expand ( 方法展開 ) Ctrl + 加號
  • Collapse ( 方法折疊 ) Ctrl + 減號
  • Expand Recursively ( 同上,方法展開 ) Ctrl + Alt + 加號
  • Collapse Recursively ( 同上,方法折疊 ) Ctrl + Alt + 減號
  • Expand All ( 全部方法展開 ) Ctrl + Shift + 加號
  • Collapse All ( 全部方法折疊 ) Ctrl + Shift + 減號
  • Expand doc comments ( 展開Java doc註釋 )
  • Collapse doc comments ( 折疊Java doc註釋 )
  • Insert Live Template ( 選擇Live Templates模板 ) Ctrl + J
  • Surround with Live Template ( 選擇Live Templates模板 ) Ctrl + Alt + J
  • Comment with Line Comment ( 行註釋 ) Ctrl + /
  • Reformat Code ( 格式化代碼 ) Ctrl + Alt + L
  • Show Reformat File Dialog ( 彈出格式化彈框 ) Ctrl + Alt + Shift + L
  • Optimize Imports ( 去除未引用的包導入聲明 ) Ctrl + Alt + O

(二)下載搭檔的代碼,進行不少於三次的junit測試

1.邀請搭檔加入倉庫

技術分享圖片

2.加入搭檔的倉庫

技術分享圖片

3.下載搭檔的代碼

·打開終端,進行clone

技術分享圖片

·找到complex代碼

技術分享圖片

4.對代碼進行Junit測試

技術分享圖片

·全部正常:

技術分享圖片

5.git add,git push

·提交至碼雲

技術分享圖片

(三)版本控制

  • 版本控制提供項目級的 undo(撤銷) 功能: 沒有什麽事情是終結版本, 任何錯誤必須很容易回滾。 假設你在使用世界上最復雜的文字處理系統。 它具備了所有的能想到的功能,就是沒有支持 DELETE(刪除) 鍵。想象你打字的時候得多麽的謹慎和緩慢吧, 特別是一篇超大的文檔的快臨近末尾的時候, 一個不小心就要重頭再來(試想你選中所有的文字, 不小心按了 DELETE 鍵, 因為沒有撤銷功能,只好重新錄入)。編輯文字和版本控制相同,任何時候都需要回滾,無論是一個小時, 一天, 還是一周, 這讓你的團隊工作自由快速的工作, 而且對於修正錯誤也非常自信。
  • 版本控制允許多人在同一代碼上工作, 只要遵守一定的控制原則就行。 再也不會發生諸如一個人覆蓋了另一個人編輯的代碼,導致那個人的修改無效這樣的情況。
  • 版本控制系統保存了過去所作的修改的歷史記錄。如果你遭遇到一些驚訝的代碼,通過版本控制系統可以很容易找出是誰幹的, 修改了什麽, 修改的時間, 如果幸運的話,還能找出原因。
  • 版本控制系統還支持在主線上開發的同時發布多個軟件版本。在軟件發布的時候也不需要整個團隊的停止工作,不需要凍結代碼。
  • 版本控制也是項目級的時間機器,你可以選擇任何一個時間, 精確地查看項目在當時的情況。 這對研究非常有用, 也是重現以前某個有問題的發布版本的基礎。

(四)重構

(1)

1.下載搭檔的代碼

import java.util.*;
public class Example8_15 {
   public static void main(String args[]) {
      Calendar calendar=Calendar.getInstance();   
      calendar.setTime(new Date());       
      int year = calendar.get(Calendar.YEAR),
      month = calendar.get(Calendar.MONTH)+1,
      day = calendar.get(Calendar.DAY_OF_MONTH),
      hour = calendar.get(Calendar.HOUR_OF_DAY),
      minute = calendar.get(Calendar.MINUTE),
      second = calendar.get(Calendar.SECOND);
      System.out.print("現在的時間是:");
      System.out.print(""+year+"年"+month+"月"+day+"日");
      System.out.println(" "+hour+"時"+minute+"分"+second+"秒");
      int y = 2012,m = 9,d = 1;       
      calendar.set(y,m-1,d);  //將日歷翻到2012年九月一日,註意8表示九月
      long time1 = calendar.getTimeInMillis();
      y = 2016;
      m = 7;
      day = 1;
      calendar.set(y,m-1,d);  //將日歷翻到2016年七月一日
      long time2 = calendar.getTimeInMillis();
      long subDay = (time2-time1)/(1000*60*60*24);
      System.out.println(""+new Date(time2));
      System.out.println("與"+new Date(time1));
      System.out.println("相隔"+subDay+"天");
    }  
}

  

2.進行重構

重構1:所有類都必須添加創建者信息技術分享圖片

技術分享圖片

重構2://註釋應在其上方

技術分享圖片

重構3:類名要遵循駝峰形式

技術分享圖片

(五)JAVA密碼學

體驗加解密---凱撒密碼

其加密過程如下:

在這裏,我們做此約定:明文記為m,密文記為c,加密變換記為E(k1,m)(其中k1為密鑰),解密變換記為D(k2,m)(k2為解密密鑰)(在這裏k1=k2,不妨記為k)。凱撒密碼的加密過程可記為如下一個變換:

c≡m+k mod n (其中n為基本字符個數)

同樣,解密過程可表示為:
m≡c+k mod n (其中n為基本字符個數)

public static void main(String args[]) throws Exception{
String s=args[0];
        int key=Integer.parseInt(args[1]);
        String es="";
        for(int i=0;i<s.length( );i++)
{  char c=s.charAt(i);
               if(c>=‘a‘ && c<=‘z‘) // 是小寫字母
                  { c+=key%26;  //移動key%26位
                    if(c<‘a‘) c+=26;  //向左超界
                    if(c>‘z‘) c-=26;  //向右超界
                  }
               else if(c>=‘A‘ && c<=‘Z‘) // 是大寫字母
{  c+=key%26;
                    if(c<‘A‘) c+=26;
                    if(c>‘Z‘) c-=26;
                  }
               es+=c;
           }
       System.out.println(es);
     }

  技術分享圖片

·進行測試

技術分享圖片

三、遇到的問題及解決辦法

問題一:在進行test的時候,找不到Junit包

技術分享圖片

問題一解決辦法:使用everything找到Junit.jar的位置,然後在項目結構裏加入即可

技術分享圖片

技術分享圖片

四、總結

本次實驗主要教我們如何規範自己的代碼,使代碼不僅能讓自己看懂,更能便於他人理解。同時本次實驗還學會了如何給自己的碼雲倉庫添加成員,也是非常實用的一點。

碼雲鏈接:https://gitee.com/Apollo20175126/java-besti-20175126

2018-2019-2 20175126謝文航 實驗三《敏捷開發與XP實踐》實驗報告