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