博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第三次作业结对编程
阅读量:4514 次
发布时间:2019-06-08

本文共 3256 字,大约阅读时间需要 10 分钟。

一、地址链接

github地址:https://github.com/Foreverux/WordCount

伙伴作业地址:https://www.cnblogs.com/JQloveJX/p/10659417.html

 

第二、结对过程

图片:

 

 

人员学号: 蒋201731062117,张201731062119

 

三、PSP表格

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 20  20

· Estimate

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

 800  950

Development

开发

 750  600

· Analysis

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

 60  80

· Design Spec

· 生成设计文档

 30  20

· Design Review

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

 60  50

· Coding Standard

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

 10  10

· Design

· 具体设计

 20  20

· Coding

· 具体编码

 200  220

· Code Review

· 代码复审

 20  20

· Test

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

 50  40

Reporting

报告

 10  20

· Test Report

· 测试报告

 10  10

· Size Measurement

· 计算工作量

 30  20

· Postmortem & Process Improvement Plan

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

 20  20
 

合计

 800 950

 

四、设计思路

首先分析题意,可以分为五个类分别设计:

一、读取用户指定的txt文件。

二、统计TXT文件中字符个数(不包括中文字符,即ASCII值中)

三、统计txt中的有效行数(空格,制表符,回车符为空白字符)

四、统计总共的单词出现个数与频率最高的10个并统计频数

五、将输出信息保存到output.txt文件内

首先将读取文件的每一数据都保存到一个字符串中,然后其余三个功能基于此调用。

共创立5个类,分别设立接口,每个功能分别调用第一个读取类read()。

 

五、代码设计实现过程及代码复审

 首先设计read()方法,返回保存的txt的字符串,然后分别设计CountCharacters()记录字符的总数,ValidLine()记录有效行数,Isword()判断是否符合单词,

CountWords()记录单词的总个数,TopTenWords()记录频率最高的十个单词及频数。最后二人整合设计接口主函数new调用。

eg、以public bool Isword(string str)判断是否单词,之后统计单词个数,以字符串数组保存读写的字符串,其中以空白字符分割,并且书写ICountWords()统计总共单词数,以客户需求输出前topn频率的单词。

 

 

 

 代码复审:

代码复审过程,我们互相发现了各自的问题,例如个别地方没有遵守变量命名规则,函数命名规则等。好的是大部分地方都很好,换行,缩进等都做得很好。    代码合并后,发现问题:在有输入的时候,很多语句都写在了类里面,实际调用很麻烦,所以之后就又改进了代码。

 

六、代码规范

讨论得出的代码规范:

(1)缩进:因为都是用的VS2017,所以我们统一使用TAB键,更方便,也可以统一整齐。

(2)断行与空白的{ }行:保证每行一句代码,‘ { ’  ‘ } ’独占一行,便于确定括号的完整对照性。

(3)大小写问题:所有单词的第一个字母都大写,如果是组合单词,第二个单词首字母大写,如:MaxNumber

(4)注释:每个函数,类都要注释,并且注释放在函数头。

注释统一用中文书写,更方便伙伴阅读理解,并且中文与字符的视觉差较大,不会产生视觉疲劳。

参考代码规范链接:http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html

 

七、程序改进

主要有两点改进。

其一:在类里的方法有多次在另一个类调用的情况,我们考虑了执行的次数与界面的观赏性,将部分语句修改移动到主函数执行一次,避免了重复执行。

其二:起初在字典序头疼了很久,使用了多个for循环与if语句,后来查到了C#中有专门提供的Dictionary函数,大大方便了程序的可行性。

 效能分析改进

 

 

八、单元测试

筛选的部分测试代码以及测试成功的记录

 

 

 

 

 

 

 

 

 九、代码说明

部分重要代码实现如下:

//统计TXT文件中字符个数(不包括中文字符)    public class CountCharacters : ICountCharacters    {        public int Countcharacters(string str)        {            ValidLine validLine = new ValidLine();            int i, count, line;            count = 0;            line = 0;            for (i = 0; i < str.Length; i++)            {                if (str[i] >= 0 && str[i] <= 127)                {                    if (str[i] == '\n')                    {                        line++;                    }                    count++;                }            }            count = count - line;            return count;        }    }

  

//三、统计txt中的有效行数    public class ValidLine    {        public int ValidLine1(string path)        {            int count = 0;            string[] contents = File.ReadAllLines(path);            for (int i = 0; i < contents.Length; i++)            {                count++;                if (contents[i].Equals(string.Empty))                {                    count--;                    continue;                }            }            return count;        }    }

  

 

 

十、心得感受

老师教授了心得与理论经验,我们通过实践操作,沟通交流,心得分享互相学习了很多,对单元测试的独立性,可重复性有了更深入的认识。

在此次结对编程中,我们尤其锻炼了操作能力,理论与实践的结合。

我们也体验了工作中的氛围与方式,知道了交流的重要性以及交流的时间成本。

总体来说,此次作业严格分步操作,分别完成部分任务,最后综合检测。质量上提高了很多,但时间上并没有太大变化。

希望能在之后的合作中建立默契,建立准则,相互熟悉,完成项目。

 

转载于:https://www.cnblogs.com/zwh29/p/10654379.html

你可能感兴趣的文章
js div拖动动画运行轨迹效果
查看>>
使用Struts 2框架实现文件下载
查看>>
Recipe 1.9. Processing a String One Word at a Time
查看>>
Linux 下查看系统是32位 还是64 位的方法
查看>>
MySQL 引擎 和 InnoDB并发控制 简介
查看>>
Dave Python 练习二
查看>>
菜根谭#179
查看>>
Android 开发笔记___textvieww__跑马灯效果
查看>>
[ JS 进阶 ] 闭包,作用域链,垃圾回收,内存泄露
查看>>
GitHub注册与Git安装
查看>>
11Qt样式表
查看>>
IOS开发-懒加载\延迟加载-图片浏览器实例
查看>>
.net知识体系
查看>>
第二章 第五节 获取帮助
查看>>
关于源代码及其管理工具的总结
查看>>
此文对你人生会有莫大好处的,建议永久保存 2013-07-26 11:04 476人阅读 评论(0) ...
查看>>
JQuery怎样返回前一页
查看>>
Best Time to Buy and Sell Stock
查看>>
Web服务器的原理
查看>>
记录ok6410 jlink 命令行调试uboot
查看>>