1. 程式人生 > >2017-2018-2 20165306 實驗三《敏捷開發與XP實踐》實驗報告

2017-2018-2 20165306 實驗三《敏捷開發與XP實踐》實驗報告

The set mov 常見 DApp 兩個 如何 current head

實驗三《敏捷開發與XP實踐》實驗報告

實驗報告封面

技術分享圖片

實驗內容

  1. XP基礎

  2. XP核心實踐

  3. 相關工具

實驗步驟

(一) 敏捷開發與XP實踐-1

實驗要求:

參考 代碼規範 安裝alibaba 插件,解決代碼中的規範問題。在IDEA中使用工具(Code->Reformate Code)把下面代碼重新格式化,再研究一下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));
}
}
  • IDEA中的插件,通過Jetbrains官方倉庫安裝:打開 Settings -> Plugins -> Browse repositories。在搜索框輸入alibaba即可看到Alibaba Java Code Guidelines插件,點擊Install進行安裝,然後重啟IDEA生效。

技術分享圖片

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

技術分享圖片

  • 格式化後的代碼截圖:

技術分享圖片

  • 我認為 Code -> Move Line Down/Up很好用,把光標放在某一行的任意位置,通過按 Shift+Alt+PgUp/PgDn ,上下移動該行。

移動前運行結果截圖:

技術分享圖片

移動後運行結果截圖:

技術分享圖片

  • 代碼規範 知識點

代碼標準中很重要的一項是如何給包、類、變量、方法等標識符命名,能很好的命名可以讓自己的代碼立馬上升一個檔次。Java中的一般的命名規則有:

- 要體現各自的含義
- 包、類、變量用名詞
- 方法名用動賓
- 包名全部小寫,如:io,awt
- 類名第一個字母要大寫,如:HelloWorldApp
- 變量名第一個字母要小寫,如:userName
- 方法名第一個字母要小寫:setName

標識符名字應當直觀且可以拼讀,可望文知意,不必進行“解碼”,一般采用英文單詞或其組合,便於記憶和閱讀,切忌使用漢語拼音來命名,用詞要準確例如“當前值”應該起名currentValue

,寫成 nowValue 就不準確了,但還湊合,寫成 dqz (dang qian zhi 首字母)就是笑話了。

標識符的長度 “min-length && max-information” 的原則,比如:maxValmaxValueUntilOverflow 要好些,可以通過去元音法把變量名變短,如returnValue-> rtnValmessage -> msg ;一般全局變量用具有說明性的名字,局部變量用短名字:單字符的名字,常見的如ijk 等用作局部變量。

(二) 敏捷開發與XP實踐-2

實驗要求:

在碼雲上把自己的學習搭檔加入自己的項目中,確認搭檔的項目加入自己後,下載搭檔實驗二的Complex代碼,加入不少於三個JUnit單元測試用例,測試成功後git add .; git commit -m "自己學號 添加內容";git push;提交搭檔項目git log的截圖,包含上面git commit的信息,並加上自己的學號水印信息。

  • 把自己的學習搭檔加入自己的項目中,管理-> 項目成員管理 -> 開發者

技術分享圖片

  • 添加JUnit單元測試用例

20165306添加ComplexTest

技術分享圖片

(三) 敏捷開發與XP實踐-3

實驗要求:

完成重構內容的練習,下載搭檔的代碼,至少進行三項重構,提交重構後代碼的截圖,加上自己的學號水印。提交搭檔的碼雲項目鏈接。

  • 重構 知識點:

重構(Refactor),就是在不改變軟件外部行為的基礎上,改變軟件內部的結構,使其更加易於閱讀、易於維護和易於變更 。重構中一個非常關鍵的前提就是“不改變軟件外部行為”,它保證了我們在重構原有系統的同時,不會為原系統帶來新的BUG,以確保重構的安全。

一個完整的重構流程包括:

- 從版本控制系統代碼庫中Check out code
- 讀懂代碼(包括測試代碼)
- 發現bad smell
- Refactoring
- 運行所有的Unit Tests
- 往代碼庫中Check in code
  • 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。你必須決定這個方法放在哪兒最合適,並確保它被安置後就不會再在其它任何地方出現。

  • 重構fenshu

技術分享圖片

(四) 敏捷開發與XP實踐-4

實驗要求:

參考Java 密碼學算法,以結對的方式完成Java密碼學相關內容的學習,結合重構,git,代碼標準。提交學習成果碼雲鏈接和代表性成果截圖,要有學號水印。

  • Java對稱加密-DES算法:對稱密鑰的生成和保存

以字節保存在文件中:

技術分享圖片

  • Java對稱加密-DES算法:使用對稱密鑰進行加密和解密

輸入是以對象方式保存在文件key1.dat中的密鑰,以及需要加密的一段最簡單的字符串"Hello World!",使用密鑰對"Hello World!"進行加密,加密後的信息保存在文件中。

技術分享圖片

  • Java對稱加密-DES算法:運行程序

當前目錄下必須有前面生成的密鑰文件keykb1.dat,以及密文文件SEnc.dat。輸入java SDec運行程序,將輸出明文字符串“Hello World!”。

技術分享圖片

需求分析:

步驟 耗時 百分比
需求分析 15分鐘 7%
設計 100分鐘 48%
代碼實現 35分鐘 17%
測試 30分鐘 14%
分析總結 30分鐘 14%

2017-2018-2 20165306 實驗三《敏捷開發與XP實踐》實驗報告