一、合作 :

github项目地址https://github.com/Shen-MoMo/WordCount 

合作同学作业地址:https://www.cnblogs.com/gbx123/p/11640432.html

结对成员学号:201731062502 ,201731062115

 


 

二、PSP表格:

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 

 

· Estimate

· 估计这个任务需要多少时间

 30

 30

Development

开发

 

 

· Analysis

· 需求分析 (包括学习新技术)

 60

 60

· Design Spec

· 生成设计文档

 30

 30

· Design Review

· 设计复审 (和同事审核设计文档)

 30

 30

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

 10

 10

· Design

· 具体设计

 30

 120

· Coding

· 具体编码

 60

 120

· Code Review

· 代码复审

 30

 90

· Test

· 测试(自我测试,修改代码,提交修改)

 60

 120

Reporting

报告

 

 

· Test Report

· 测试报告

 30

 30

· Size Measurement

· 计算工作量

 30

 30

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

 30

 30

 

合计

 430

 700

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PSP表格在记录项目完成进度上很有帮助,可以让成员清晰的看到进度与每个进程的花费时间,在项目开始之前,预估时间也是对本次此项目的一个时间安排,但是往往预估的时间都比我们实际话费的时间时间更少。

三、计算模块接口的设计与实现过程:

1、项目需求:

  • 统计字符数
  • 统计单词数
  • 统计行数
  • 统计结果以指定格式输出到默认文件中
  • 其他扩展功能

2、我的思路:

搭档最先完成了部分基础功能的实现以及代码的架构,但由于一开始领航出现失误,遗留下了一些问题,随后加以改正。

  • 在编写totalWord()函数时,用StreamReader方式读取出文件所有信息,然后利用正则表达式匹配单词,取出所有单词得到集合mc(MatchColletion)。
  • 在编写countWord()函数时,用同上的方法得出集合mc,首先让集合mc中的元素对大小写不敏感,然后将第一次出现的单词作为key传入哈希表,value为1,当出现重复的单词时value加1。随后对哈希表进行排序,得到出现频率最大的10个单词
  • 在编写countWord()函数之前,每个函数都只返回一个int型的数据就足够,但countWord()函数需要返回很多数据,所以代码需要重构。
  • 将函数的返回值改为了字符串String,返回值存入动态数组returnTxt。
  • 编写-r指令,添加指定读取文件地址的功能(默认读取DEBUG目录下的file.txt文件)。
  • 编写save()函数,添加指定保存地址和指定保存文件的功能。将动态数组returnTxt中的的元素输出到文件中(默认保存在DEBUG目录下)。
  • 最后检查异常处理,进行测试。

3、流程图:

《构建之法》第四次作业——结队编程

 

 

《构建之法》第四次作业——结队编程

四、代码复审:

代码复审过程中,我查看了最初制定的代码规范,对比编程过程,命名采用驼峰命名法,不使用缩写形式,使用tab作为缩进,大小为4,在关键地方写上注释,这更便于理解;

在编写过程中,最初忽略了中文不算字符这个条件,就直接用ToString()函数获取字符串长度,没有加条件判断,导致最后返回的结果算上了中文,在代码复查过程中,我利用Ascii值0-127这一条件进行判断,排除了这个问题;

错误的:

FileStream fs = new FileStream(fileName, FileMode.Open);//打开文件
            string str = Convert.ToString(fs.Length);
            fs.Close();                                      
            Console.Write("字符统计成功!\n");
            return int.

 错误结果:

《构建之法》第四次作业——结队编程

正确的:

while ((str = fs.ReadLine()) != null)
            {
                for (i = 0; i < str.Length; i++)
                {
                    if (str[i] >= 0 && str[i] <= 127)
                    {
                       // Console.Write(str[i]);
                        count++;
                    }
                }
            }

正确结果:

《构建之法》第四次作业——结队编程

审查功能代码:

统计字符功能

 public static string getChacactor(string filePath)
        {
            //统计字符数的方法 
            int i, count;
            count = 0;
            //打开文件
            StreamReader fs = new StreamReader(filePath);
            string str = null;
            while ((str = fs.ReadLine()) != null)
            {
                for (i = 0; i < str.Length; i++)
                {
                    if (str[i] >= 0 && str[i] <= 127)
                    {
                        // Console.Write(str[i]);
                        count++;
                    }
                }
            }
            fs.Close();
            Console.Write("字符统计成功!\n");
            Console.Write("characters:" + count + "\n");
            return "characters:" + count + "\n";
        }
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-29
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案