20155225 实验三《敏捷开发与XP实践》实验报告
20155225 實驗三《敏捷開發與XP實踐》實驗報告
一、使用工具(Code->Reformate Code)把代碼重新格式化
IDEA里的Code菜單有很多實用的功能可以幫助我們讓代碼更簡潔可觀。我還學習了Code菜單里的其它功能,比如整行移動代碼,優化imports
二、克隆搭檔代碼
首先在碼云上加入搭檔到自己的項目,然后復制搭檔項目代碼,在IDEA里VOC->git,即可將搭檔代碼克隆下來。
三、代碼重構
重構(Refactor),就是在不改變軟件外部行為的基礎上,改變軟件內部的結構,使其更加易于閱讀、易于維護和易于變更 。
重構中一個非常關鍵的前提就是“不改變軟件外部行為”,它保證了我們在重構原有系統的同時,不會為原系統帶來新的BUG,以確保重構的安全。
- 如何保證不改變軟件外部行為:重構后的代碼要能通過單元測試。
- 如何使其更加易于閱讀、易于維護和易于變更:設計模式給出了重構的目標。
修改軟件的四種動機:
- 增加新功能
- 原有功能有BUG
- 改善原有程序的結構
- 優化原有系統的性能
需要重構的地方:有臭味道(Bad Smell)的代碼——Duplicated Code(重復的代碼)
最單純的Duplicated Code就是[同一個class內的兩個方法含有相同表達式(expression)]。這時候你需要做的就是采用Extract Method提煉出重復的代碼,然后讓這兩個地點都調用被提煉出來的那一段代碼。
另一種常見情況就是[兩個互為兄弟(sibling)的subclasses內含有相同表達式]。要避免這種情況,只需要對兩個classes都使用Extract Method,然后再對被提煉出的代碼使用Pull Up Method,將它推入superclass內。
如果代碼之間只是類似,并非完全相同,那么就得運用Extract Method將相似部分和差異部分割開,構成單獨一個方法。然后你可能發現或許可以運用Form Template Method獲得一個Template Method設計模式。
如果有些方法以不同的算法做相同的事,你可以擇定其中較清晰的一個,并使用Substitute Algorithm將其它方法的算法替換掉。
如果兩個毫不相關的classes內出現Duplicaded Code,你應該考慮對其中一個使用Extract Class,將重復代碼提煉到一個獨立class中,然后在另一個class內使用這個新class。但是,重復代碼所在的方法也可能的確只應該屬于某個class,另一個class只能調用它,抑或這個方法可能屬于第三個class,而另兩個classes應該引用這第三個class。你必須決定這個方法放在哪兒最合適,并確保它被安置后就不會再在其它任何地方出現。
一個完整的重構流程:
- 從版本控制系統代碼庫中Check out code
- 讀懂代碼(包括測試代碼)
- 發現bad smell
- Refactoring
- 運行所有的Unit Tests
- 往代碼庫中Check in code
四、結對學習密碼學
我們實現了凱撒密碼,代碼如下:
import java.util.Scanner; import java.lang.Integer;public class TestCaesar {public static void main(String[] args) {System.out.println("請輸入明文:");Scanner sc=new Scanner(System.in);String s=sc.nextLine();System.out.println("請輸入密鑰:");Scanner sc1=new Scanner(System.in);int key=sc1.nextInt();//將下一個輸入項轉換成int類型Encryption(s, key);}public static void Encryption(String str,int k){//加密String string="";for (int i = 0; i < str.length(); i++) {char c=str.charAt(i);if(c>='a'&&c<='z'){//如果字符串中的某個字符是小寫字母c+=k%26;//移動key%26;if(c<'a')c+=26;if(c>'z')c-=26;}else if(c>='A'&&c<='Z'){//如果字符串中的某個字符是大寫字母c+=k%26;//移動key%26;if(c<'A')c+=26;if(c>'Z')c-=26;}string+=c;//將加密后的字符串連成字符串}System.out.println(str+" 加密后為: "+string);}}PSP時間
| 需求分析 | 5 | 10% |
| 設計 | 5 | 10% |
| 代碼實現 | 30 | 60% |
| 測試 | 5 | 10% |
| 分析總結 | 5 | 10% |
轉載于:https://www.cnblogs.com/clever-universe/p/6822631.html
總結
以上是生活随笔為你收集整理的20155225 实验三《敏捷开发与XP实践》实验报告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU 4944 逆序数对
- 下一篇: 在ASP.NET Core MVC中构建