2018-2019-2 20175235 實驗三《敏捷開發與XP實踐》實驗報告
一、實驗報告封面
課程:Java程序設計 班級:1752 姓名:澤仁拉措 學號:20175235
指導教師:婁嘉鵬 實驗日期:2019年4月30日
實驗時間: 。 實驗序號:實驗三
實驗名稱:敏捷開發與XP實踐
二、實驗內容
XP基礎
XP核心實踐
相關工具
三、實驗要求
1.沒有Linux基礎的同學建議先學習《Linux基礎入門(新版)》《Vim編輯器》 課程
2.完成實驗、撰寫實驗報告,實驗報告以博客方式發表在博客園,註意實驗報告重點是運行結果,遇到的問題(工具查找,安裝,使用,程序的編輯,調試,運行等)、解決辦法(空洞的方法如“查網絡”、“問同學”、“看書”等一律得0分)以及分析(從中可以得到什麽啟示,有什麽收獲,教訓等)。報告可以參考範飛龍老師的指導
- 嚴禁抄襲,有該行為者實驗成績歸零,並附加其他懲罰措施。
四、實驗步驟
1.①代碼規範
下載插件:通過Jetbrains官方倉庫安裝:打開Setting
->Plugins
->搜索框輸入alibaba
->下載即可
②編碼規約掃描:在文件上點擊右鍵找到即可
不規範的地方,有中文提示並且定位到了行,alibaba把問題分為block/critical/major三個等級,有些規則可以一鍵修復。
2.編碼標準
①Java中的一般的命名規則有
要體現各自的含義
包、類、變量用名詞
方法名用動賓
包名全部小寫,如:io,awt
類名第一個字母要大寫,如:HelloWorldApp
變量名第一個字母要小寫,如:userName
②.作業1:把下面代碼重新格式化,再研究一下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)); } }
③·Ctrl+/或Ctrl+Shift+/`添加註釋
Ctrl+O
重載基本類
④.Java中的一般的命名規則有:
要體現各自的含義
包、類、變量用名詞
方法名用動賓
包名全部小寫,如:io,awt
類名第一個字母要大寫,如:HelloWorldApp
變量名第一個字母要小寫,如:userName
方法名第一個字母要小寫:setName
3.敏捷開發與XP
在碼雲上把自己的學習搭檔加入自己的項目中,確認搭檔的項目加入自己後,下載搭檔實驗二的Complex代碼,加入不少於三個JUnit單元測試用例,測試成功後git add .; git commit -m "自己學號 添加內容";git push;
提交搭檔項目git log的截圖,包含上面git commit的信息,並加上自己的學號水印信息
①搭檔的代碼:
public class Complex {
private double RealPart;//復數的實部
private double ImagePart;//復數的虛部
public Complex() {}
public Complex(double a, double b) {
setRealPart(a);
setImagePart(b);
}
public void setRealPart(double a) {
RealPart = a;
}
public void setImagePart(double b) {
ImagePart = b;
}
public double getRealPart() {//返回復數的實部
return RealPart;
}
public double getImagePart() {
return ImagePart;
}
Complex ComplexAdd(Complex a) {//(a+bi)+(c+di)=(a+c)+(b+d)i
Complex complex = new Complex();
complex.RealPart = this.RealPart + a.RealPart;
complex.ImagePart = this.ImagePart + a.ImagePart;
return complex;
}
Complex ComplexSub(Complex a) {//(a+bi)-(c+di)=(a-c)+(b-d)i
Complex complex=new Complex();
complex.RealPart=this.RealPart-a.RealPart;
complex.ImagePart=this.ImagePart-a.ImagePart;
return complex;
}
Complex ComplexMulti(Complex a) {//(a+bi)*(c+di)=(ac-bd)+(ad+bc)i
Complex complex =new Complex();
complex.RealPart=this.RealPart*a.RealPart-this.ImagePart*a.ImagePart;
complex.ImagePart=this.RealPart*a.ImagePart+this.ImagePart*a.RealPart;
return complex;
}
Complex ComplexDiv(Complex a) {//(a+bi)/(c+di)=(a+bi)(c-di)/(c^2+d^2)
Complex complex=new Complex();
complex.RealPart=(this.RealPart*a.ImagePart+this.ImagePart*a.RealPart)/(a.ImagePart*a.ImagePart+a.RealPart*a.RealPart);
complex.ImagePart=(this.ImagePart*a.ImagePart+this.RealPart*a.RealPart)/(a.ImagePart*a.ImagePart+a.RealPart*a.RealPart);
return complex;
}
public String toString() {
if (ImagePart==0) {
String str = String.valueOf(RealPart);
return str;
}
else if (RealPart==0) {
String str = String.valueOf(ImagePart)+"i";
return str;
}
else {
if (ImagePart>0) {
String str = String.valueOf(RealPart) + "+" + String.valueOf(ImagePart) + "i";
return str;
}
else {
String str = String.valueOf(RealPart) + String.valueOf(ImagePart) + "i";
return str;
}
}
}
}
要測試的類有ComplexAdd
、ComplexSub
、ComplexMulti
、ComplexDiv
②測試代碼如下
③然後將測試代碼傳到搭檔的碼雲裏,git log如下:
4.重構
①要求:參考http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的內容替換成IDEA
完成重構內容的練習,下載搭檔的代碼,至少進行三項重構,提交重構後代碼的截圖,加上自己的學號水印。提交搭檔的碼雲項目鏈接。
②實驗步驟
重構的概念:
重構(Refactor),就是在不改變軟件外部行為的基礎上,改變軟件內部的結構,使其更加易於閱讀、易於維護和易於變更 。
重構中一個非常關鍵的前提就是“不改變軟件外部行為”,它保證了我們在重構原有系統的同時,不會為原系統帶來新的BUG,以確保重構的安全。如何保證不改變軟件外部行為?重構後的代碼要能通過單元測試。如何使其更加易於閱讀、易於維護和易於變更 ?設計模式給出了重構的目標。
我們要修改軟件,萬變不離其宗,無非就是四種動機:
增加新功能;
原有功能有BUG;
改善原有程序的結構;
優化原有系統的性能 。
第一種和第二種動機,都是源於客戶的功能需求,而第四種是源於客戶的非功能需求。軟件的外部質量,其衡量的標準就是客戶對軟件功能需求與非功能需求的滿意度。它涉及到一個企業、一個軟件的信譽度與生命力,因此為所有軟件企業所高度重視。要提高軟件內部質量,毫無疑問就是軟件修改的第三個動機:改善原有程序的結構。它的價值是隱性的,並不體現在某一次或兩次開發中,而是逐漸體現在日後長期維護的軟件過程中。
而一個完整的重構流程包括:
從版本控制系統代碼庫中Check out code
讀懂代碼(包括測試代碼)
發現bad smell
efactoring
運行所有的Unit Tests
往代碼庫中Check in code
下面就是下載搭檔的代碼,至少進行三項重構:
搭檔的代碼:
重構1:重寫toString時的@override標誌
重構2:添加作者和日期
重構3:規範方法名(首字母小寫)
規範後的代碼
5.我的碼雲鏈接:
https://gitee.com/drpkgj/Besti.Java/blob/master/TEST/ComplexTest.java
五.實驗總結:
這次實驗的大部分都是依靠實驗二所學,重新復習實驗二部分操作,剛在Windows上git才發現自己Windows既然沒安裝git,平時都用虛擬機,然後連忙又下載git
2018-2019-2 20175235 實驗三《敏捷開發與XP實踐》實驗報告