第三次作业

作业链接https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/2879

Git 仓库地址https://github.com/Eleanoren/WordCount

 

Part 0. 分配工作

这次作业我是和我室友组的队,我们先商量了一下如何分配工作。无奈我们两个都缺乏项目经验,也是在标准的制定上争论了很久。最后商议的结果是代码一起写,她负责实现统计文件的字符数和有效行数以及搭建项目的大体框架,,我实现统计文件中单词总数,并按字典序排序输出到文件的功能。代码写好后,由我负责测试,她负责复审。

 

Part 1. PSP表格

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

   

· Estimate

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

 350  580

Development

开发

   

· Analysis

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

 10  40 

· Design Spec

· 生成设计文档

 5  15 

· Design Review

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

 5  10

· Coding Standard

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

 20  15

· Design

· 具体设计

 15  20 

· Coding

· 具体编码

 300  440

· Code Review

· 代码复审

 20  10

· Test

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

 30  40

Reporting

报告

   

· Test Report

· 测试报告

 20  30

· Size Measurement

· 计算工作量

 10  5

· Postmortem & Process Improvement Plan

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

 20  20
 

合计

 350  580

 

Part 2. 规范编码格式

由于代码是一起合作写出来的,所以要制定一个标准提高代码的可读性和可移植性,于是,我们达成了一下几点共识:

  • 给函数写注释
  • 变量名要统一,且用英文
  • 将需要实现的功能封装,具体的功能写成函数

 

Part 3. 设计程序

我做的部分是统计文件中单词总数,并按字典序排序输出到文件,大致的思路是将文章内容用 ReadToEnd() 转成一个字符串,将单词一个一个分割进 list ,统计完单词出现频率后再用字典序排序输出。

            
public
void putword(string path)//统计单词出现频率 { List<string> List = new List<string>(); StreamReader sr = new StreamReader(path, Encoding.Default); string txt = sr.ReadToEnd(); txt = txt.ToLower(); string[] Array = txt.Split(new char[] { ' ', '\n', '\t' }); for (int i = 0; i < Array.Length; i++) { if (Array[i].Length < 4) continue; else { if (Array[i][0] >= 0 && Array[i][0] <= 9) continue; else List.Add(Array[i]); } } Dictionary<string, int> dic = new Dictionary<string, int>(); foreach (var p in List)//统计list中相同元素出现的次数并排序 { if (dic.ContainsKey(p)) dic[p] += 1; else dic.Add(p, 1); } Console.WriteLine("单词总数:{0}", List.Count); for (int count = 0; count < 10; count++) { var element = dic.ElementAt(count); var Key = element.Key; var Value = element.Value; Console.WriteLine("< {0} > : {1}", Key, dic[Key]); } using (StreamWriter file = new StreamWriter("myfile.txt")) for (int count = 0; count < 10; count++) { var element = dic.ElementAt(count); var Key = element.Key; var Value = element.Value; file.WriteLine("< {0} > : {1}", Key, dic[Key]); } sr.Close(); }

 

我们用了莎翁的十四行诗做测试,看起来是对的

将出现频率最高的十个单词写入 myfile.txt 中

 

 

Part 4. 测试程序

 

三个测试貌似都过了

做断点测试

 

Part 5. 小结

这次作业其实完成的并不顺利,因为和小伙伴难免有意见不一致的时候,这个时候进度就会停滞不前。也从侧面印证了一开始的沟通是多么重要。结对编程也是一个查漏补缺的过程,我也从中学到了很多,从一无所知到从项目中不断学习新知识,也学会了与队友沟通。同时,一个人看问题也往往比较片面,从而忽视了很多问题,这个时候结对编程的好处就展现出来了,可能我没想到的点,队友想到了,看问题能更加全面,而往往自己没看出来的错误,队友能发现,真正有了 1+1>2 的体验。

posted @ 2019-04-05 22:16  Sabrina_Liu  阅读(168)  评论(2编辑  收藏  举报