WordCount優化

1、基本任務:java

github項目地址:https://github.com/YYCZ/WCProgit

 

 

 

接口的實現:我在小組任務裏面負責文件輸入模塊的任務,github

代碼結構如上,設計一個文件輸入類,一個String類型的數組,用於接收參數進行解析;構造方法傳入的是一個String類型的數組地址;在參數的解析過程裏,須要判斷參數的有效性,好比參數爲空,是否是多個文件,咱們只處理一個文件傳入的狀況,只處理txt的狀況。編程

介紹下黑盒測試與白盒測試:設計模式

黑盒測試:不考慮程序內部結構和內部特性,從用戶觀點出發,針對程序接口和用戶界面進行測試,根據產品應該實現的實際功能和已經定義好的產品規格,來驗證產品所應該具備的功能是否實現,是否知足用戶的要求 。數組

白盒測試,已知產品的內部工做過程,針對性很強,能夠對程序每一行語句、每個條件或分支進行測試,測試效率比較高,並且能夠清楚已測試的覆蓋程度。架構

白盒測試對代碼具體執行進行分析,針對三個if條件進行分析:框架

 

 

測試用例採用myeclipse自帶的JUnit框架;eclipse

關鍵測試函數:assertEquals(「預期結果」,「調用被測的函數」);函數

舉個例子截圖:(參數個數的有效性檢驗測試)

測試用例清單:

 

 

測試質量針對具體的功能已經實現,測試結果ok,被測模塊ok.

小組貢獻分:0.25

 

2、擴展任務:

(1)技術開發文檔的採用:採用了《阿里巴巴java開發手冊》中的《編程規約》的《命名風格》。

(2)使用該規範分析了17176的代碼,代碼遵循瞭如下好的規範,舉幾個例子:

《阿里巴巴Java開發手冊》中指出:若是模塊、接口、類、方法使用了設計模式,在命名時體現出具體模式。 說明:將設計模式體如今名字中,有利於閱讀者快速理解架構設計理念。

根據個人實踐體會舉例以下:在代碼「public class Input的類定義時,類名稱的命名就體現了工廠模式的使用。

《阿里巴巴Java開發手冊》中指出: 代碼中的命名嚴禁使用拼音與英文混合的方式,更不容許直接使用中文的方式。
說明: 正確的英文拼寫和語法可讓閱讀者易於理解,避免歧義。注意,即便純拼音命名方式
也要避免採用

個人代碼規範示例:inValid(判斷爲無效)

類名使用 UpperCamelCase 風格

個人代碼規範示例:public class Input

方法名、參數名、成員變量、局部變量都統一使用 lowerCamelCase 風格,必須聽從
駝峯形式。

 

個人代碼規範示例:public boolean inValid()

 

(3)說明選擇的是checkstyle靜態代碼檢查工具,下載地址:http://checkstyle.sourceforge.net/。

界面截圖:沒什麼問題,就是一些縮進警告。

 

(5)整個小組的代碼主要存在的問題就是字符縮進不統一,代碼改進的方法:制定統一的代碼編寫規範。

 3、高級任務:性能測試和優化

1.數據集設計思路:由於程序的邏輯設計比較清晰,因此咱們的性能上面直接從測試數據集的量上面入手,因此思路就是用足夠大的文件。這裏咱們直接採用英文的txt書籍進行數據集的設計。

2.優化前程序性能指標與優化後的性能指標:

以小說<<飄>>(txt)做爲測試數據集,結果以下:

 

3.參加人員:張海濤(主持),陳鵬旭(評審),餘浩宇(評審),餘笑童(評審)

對組員17178的代碼規範進行評審:

(1)

《阿里巴巴Java開發手冊》中指出:若是模塊、接口、類、方法使用了設計模式,在命名時體現出具體模式。 

在代碼「public class Core的類定義時,類名稱的命名就體現了工廠模式的使用。

《阿里巴巴Java開發手冊》中指出: 代碼中的命名嚴禁使用拼音與英文混合的方式,更不容許直接使用中文的方式。
說明: 正確的英文拼寫和語法可讓閱讀者易於理解,避免歧義。注意,即便純拼音命名方式
也要避免採用 

其方法:private void updateWords則很好地體現了這一點。

類名使用 UpperCamelCase 風格

 

 

方法名、參數名、成員變量、局部變量都統一使用 lowerCamelCase 風格,聽從
駝峯形式。 

 

private void updateWordsWithHash

 

 

我以爲代碼的規範作得很好,沒什麼意見。

 

4.影響性能的主要指標是詞頻統計與排序,

優化前(沒用哈希):詞頻統計:n^2   排序:n*lgn

優化後:詞頻統計:n   排序:nlgn

 

5.優化的思路是採用哈希的手段,具體優化後的指標對好比圖:

 

 

 6.沒有軟件開發就沒有測試,軟件開發提供軟件測試的對象。

軟件開發和軟件測試都是軟件生命週期中的重要組成部分
軟件開發和軟件測試都是軟件過程當中的重要活動。
軟件測試是保證軟件開發產物質量的重要手段
相關文章
相關標籤/搜索