1. 程式人生 > >第四周WordCount小組作業

第四周WordCount小組作業

sep otf eno 實現 貢獻 遊標 ade readfile 作業

一、基礎功能

小組github地址:https://github.com/kawoyi/Advanced-WordCounter

PSP表格:

技術分享圖片

接口的實現:

我實現的是單詞的統計模塊,由Counter類完成,其中最主要的功能是由analyse()函數完成功能是將分割出單詞並且加入map中供輸出結果

public void analyse()//主要功能實現
{
strToken = ""; // 置strToken為空串
while (i < buffer.length())
{
getChar();
getBc();
if (isLetter())
{ // 如果ch為字母
while (isLetter() ||isConnector())
{
concat();
getChar();
}
validLize();
retract(); // 回調
if(!map.containsKey(strToken))
{
map.put(strToken, 1) ;
}else{
int temp=map.get(strToken)+1;
map.put(strToken, temp);
}
System.out.println(strToken);
strToken = "";
}
}
}

主要思路是將文件字符讀入緩存區buffer中然後利用charAt()函數和遊標i進行讀取的控制,並且加以單詞的邏輯判斷從而得到單詞。

技術分享圖片

本次測試用例的設計采用了白盒測試和黑盒測試的思想。其實前三個測試就可以覆蓋模塊所有分支,因此前三個用例偏向白盒測試。後面的測試主要是黑盒測試,偏重於考慮各種輸入所帶來的結果,每個用例針對於某種可能的異常情況。

測試腳本實例:

@Test
public void testAnalyse() {
count.setFilepath("input.txt");

FileUnit.readFile(count.getFilepath(), count.getBuffer());
}

將輸出結果result.txt文件與自己提前輸入好的結果文件進行對比

單元測試運行和評價:

技術分享圖片


如圖所示對模塊各部分進行了測試並且包括了模塊的每個語句和分支,考慮了各種邊界條件和情況,單元測試效率較高

二、擴展功能

開發規範分析:

鄒欣老師對代碼規範和代碼復審的討論:http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html

下面選取其中兩個規範進行分析

boolean isSeperator()
{
boolean flag=false;
for(int i=0;i<Define.seperator.length;i++)
{
if(ch==Define.seperator[i])
{
flag=true;
}
}
return flag;
}

1.命名規範:使用了駝峰命名法,參數名統一

2.縮進對齊,代碼段層次分明

交叉代碼評審:

評審對象 U201517107 趙國偉

public static void readFile(String filepath,StringBuffer buffer) //讀取文件
{
try {
FileReader fis = new FileReader(filepath);
BufferedReader br = new BufferedReader(fis);
int temp=-1;
while ((temp = br.read()) != -1)
{
buffer.append((char)(temp));
}

} catch (FileNotFoundException e) {
System.out.println("源文件未找到!");
e.printStackTrace();
} catch (IOException e) {
System.out.println("讀寫文件出現異常!");
e.printStackTrace();
}

}

可以看到這份代碼風格是比較不錯的,符合鄒欣老師提到的規範,例如命名ReadFile讓人一下就知道是文件讀取函數,同時對於異常的處理也是十分清晰。

組內代碼評審:

小組成員的代碼基本沒有什麽大問題,只要是在命名上個人的風格不好統一,同時的話代碼的優化還有待提升,代碼執行效率不是很高。

小組貢獻分:

0.25

技術分享圖片

第四周WordCount小組作業