1. 程式人生 > >20172314 2017-2018-2 《程序設計與數據結構》實驗報告三

20172314 2017-2018-2 《程序設計與數據結構》實驗報告三

XP ref 摘要 改善 解決 下載安裝 字母表 需要 img

課程:《程序設計與數據結構》
班級: 1723
姓名: 方藝雯
學號:20172314
實驗教師:王誌強
實驗日期:2018年5月16日
必修/選修: 必修

1、實驗內容

(1)代碼規範
http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的內容替換成IDEA。
參考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安裝alibaba 插件,解決代碼中的規範問題。
在IDEA中使用工具(Code->Reformate Code)把指定代碼重新格式化,再研究一下Code菜單,找出一項讓自己感覺最好用的功能。

(2)協同測試
在碼雲上把自己的學習搭檔加入自己的項目中,確認搭檔的項目加入自己後,下載搭檔實驗二的Complex代碼,加入不少於三個JUnit單元測試用例。
(3)重構
http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的內容替換成IDEA。

(4)密碼學應用
參考 http://www.cnblogs.com/rocedu/p/6683948.html,以結對的方式完成Java密碼學相關內容的學習,結合重構,git,代碼標準。

2、實驗要求

1、提交截圖,加上自己學號水印。
2、測試成功後git add .; git commit -m "自己學號 添加內容";git push;提交搭檔項目git log的截圖,包含上面git commit的信息,並加上自己的學號水印信息。

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

3、實驗過程及結果

準備:下載安裝alibaba 插件。

實驗一

  • 過程:
    1、打開 Settings ->Plugins ->Browse repositories...
    2、在搜索框輸入alibaba即可看到Alibaba Java Code Guidelines插件,點擊Install進行安裝
    3、輸入原始代碼
    4、右鍵點擊類名,再點擊編碼規約掃描
    5、發現問題
    6、點擊Code下的Reformate Code
    格式化代碼
  • 一般命名規則
    • 要體現各自的含義
    • 包、類、變量用名詞
    • 方法名用動賓
    • 包名全部小寫,如:io,awt
    • 類名第一個字母要大寫,如:HelloWorldApp
    • 變量名第一個字母要小寫,如:userName
    • 方法名第一個字母要小寫:setName
  • 結果截圖:
    技術分享圖片

實驗二

  • 過程:夥伴的代碼是直接復制粘貼的,沒有使用克隆,編寫Junit單元測試,幾個測試用例是類似的,git log是第一次使用。
  • 需要測試的方法 有:ComplexAdd(),ComplexSub(),ComplexMulti(),ComplexDiv()
  • 結果截圖:
    技術分享圖片
    技術分享圖片

實驗三

  • 過程:我使用了 toString、 Rename、Generate getter,由於沒有找到組員的有問題的代碼,所以沒有什麽錯誤改正。
  • 重構的目的:
    • 增加新功能;
    • 原有功能有BUG;
    • 改善原有程序的結構;
    • 優化原有系統的性能 。
  • 需要重構的地方:代碼重復、方法過長、參數列過長、條件邏輯過度復雜、分支語句
    技術分享圖片

  • 結果截圖:
    技術分享圖片
    技術分享圖片
    技術分享圖片

實驗四

  • 過程:學習密碼算法,參考博客
  • Java安全體系結構總共分為4個部分:
    • JCA( Java Cryptography Architecture, Java加密體系結構):JCA提供基本的加密框架, 如證書、 數字簽名、消息摘要和密鑰對產生器。
    • JCE( Java Cryptography Extension, Java加密擴展包):JCE在JCA的基礎上作了擴展, 提供了各種加密算法、 消息摘要算法和密鑰管理等功能。JCE的實現主要在javax.crypto包( 及其子包) 中
    • JSSE( Java Secure Sockets Extension, Java安全套接字擴展包):JSSE提供了基於SSL( Secure Sockets Layer,安全套接字層) 的加密功能。 在網絡的傳輸過程中, 信息會經過多個主機(很有可能其中一臺就被竊聽) , 最終傳送給接收者, 這是不安全的。這種確保網絡通信安全的服務就是由JSSE來提供的。
    • JAAS( Java Authentication and Authentication Service, Java鑒別與安全服務):JAAS提供了在Java平臺上進行用戶身份鑒別的功能。
  • 凱撒密碼算法:將字母表中的字母移動一定位置而實現加密。
    • 具體步驟:
      (1)根據凱撒密碼特性設計算法
      (2)傳入需要計算的字符串
      (3)處理計算結果
  • 結果截圖:
    技術分享圖片
    技術分享圖片
    技術分享圖片
    技術分享圖片
    技術分享圖片
    技術分享圖片
    技術分享圖片
    技術分享圖片

4、實驗中遇到的問題和解決過程

  • 問題一:在做實驗二的時候,測試類總是出錯。
  • 問題一解決:原因是在比較的時候沒有加toString,必須是兩個字符串型的才可以比較,改為如下就正確了。

    assertEquals(new Complex(0,4).toString(),num1.ComplexAdd(num2).toString()

5、其他

這次的實驗學到了很多關於代碼的規範,一些方便的用法,感覺還是很實用的。

6、參考資料

  • 實驗三 敏捷開發與XP實踐

20172314 2017-2018-2 《程序設計與數據結構》實驗報告三