2018-2019-2 20175126謝文航 實驗三《敏捷開發與XP實踐》實驗報告
一、實驗報告封面
-
- 課程: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實踐》實驗報告