• 第四周小组作业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

  • 相关阅读:
    iOS"伪后台"机制下如何保持APP一直运行在后台(转)(实践通过)
    weak和strong
    iOS webview 清除缓存
    iOS隐藏状态栏
    IOS 在一个应用里打开另一个应用 及其 两个应用互相调用
    ios 检查ios设备是否安装了qq,微信等应用
    【干货篇】步步为营,带你轻松掌握jQuery!
    【化繁为简】非前端开发者的福音---CSS的预处理语言 Less&Sass
    JS中有关分支结构、循环结构以及函数应用的一些简单练习
    万物皆对象的JavaScript
  • 原文地址:https://www.cnblogs.com/zgwit/p/8749061.html
Copyright © 2020-2023  润新知