2017-2018-2 20165306 實驗三《敏捷開發與XP實踐》實驗報告
實驗三《敏捷開發與XP實踐》實驗報告
實驗報告封面
實驗內容
XP基礎
XP核心實踐
相關工具
實驗步驟
(一) 敏捷開發與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”
的原則,比如:maxVal
比 maxValueUntilOverflow
要好些,可以通過去元音法把變量名變短,如returnValue
-> rtnVal
,message
-> msg
;一般全局變量用具有說明性的名字,局部變量用短名字:單字符的名字,常見的如i
,j
,k
等用作局部變量。
(二) 敏捷開發與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實踐》實驗報告