第四周小组作业wordcount优化

一。小组github地址

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

PSP表格:

接口的实现:我负责的是输出模块,接收map,输出到指定目录下的文件夹,以及对输出项目的排序由compare()构成;

 //降序排序
                public int compare(Entry<String, Integer> o1,
                        Entry<String, Integer> o2) 
                {
                    int p1=o1.getValue();
                    int p2=o2.getValue();
                    int p=p1-p2;
                    if(p>0)
                    {
                        return -1;
                        
                    }
                        else if(p==0)
                        {
                        return 0;
                        }
                        else
                        return 1;
                }
 for (Map.Entry<String, Integer> mapping:list) 
            {  //向result.txt写结果
             int temp=0;
             if(temp<100)
             {
              bw.write(  mapping.getKey() + " " + mapping.getValue()); 
              bw.newLine();
             }
             temp++;
            }
          
          bw.close();

 测试方法由白盒测试和黑盒测试组成,白盒测试采用语句覆盖,流程是比较线性的,很容易就覆盖所有分支,之后补了黑盒测试考虑多种情况下的排序函数的验证。

 测试脚本实例

测试用1-11

方法只有一个,所有的测试都围绕这一个方法进行。

二。扩展功能

开发规范分析:

邹欣老师对代码规范和代码复审的讨论:http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html

下面选取其中两个规范进行分析

 //然后通过比较器来实现排序
            Collections.sort(list,new Comparator<Map.Entry<String,Integer>>()
            {
                //降序排序
                public int compare(Entry<String, Integer> o1,
                        Entry<String, Integer> o2) 

1.分行:恰当分行使代码简单明了,层次清晰

2.命名:使用了驼峰命名法,参数名统一

交叉代码评审:

对象:U201517111 李凌风

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 = "";
            }
        }
    }

这份代码层次清晰,虽然用了这么多的括号,却丝毫不影响代码阅读,符合邹欣老师提到的规范值得学习。

组内代码评审:

小组成员的代码基本没有什么大问题,基本功能可以很好的接洽在一起,在功能性方面有待加强。

贡献率:0.25

原文地址:https://www.cnblogs.com/zgwit/p/8749061.html