《构建之法》第四次作业

<center>《构建之法第四次作业》</center>

GitHub地址https://github.com/h1916955160/WordCount
作业链接 https://edu.cnblogs.com/campus/xnsy/2019autumnsystemanalysisanddesign/homework/8710
结对伙伴博客地址 https://www.cnblogs.com/1916955160hxf/p/11663256.html?tdsourcetag=s_pcqq_aiomsg
结对伙伴学号 201731062430

结对过程

在开始的时候先分开写的,后来直接在一台电脑上写,两人一人检查,一人写,如此交换,在其中也遇到过许多问题,也得到了很好的解决

 

 

 

PSP表格

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning 计划 20 50
· Estimate · 估计这个任务需要多少时间 30 50
Development 开发 1000 1200
· Analysis · 需求分析 (包括学习新技术) 60 50
· Design Spec · 生成设计文档 60 30
· Design Review · 设计复审 (和同事审核设计文档) 60 50
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30 20
· Design · 具体设计 120 150
· Coding · 具体编码 600 900
· Code Review · 代码复审 60 60
· Test · 测试(自我测试,修改代码,提交修改 120 120
Reporting 报告 30 100
· Test Report · 测试报告 60 30
· Size Measurement · 计算工作量 30 50
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 60 30
  合计 2340 2890

(1)解题思路

1.在阅读完题目要求之后,决定在先在控制台写,大致分为6个函数,两个类,一个主类,一个方法类。六个函数分别解决6个问题

统计文件的单词总数;

统计文件的有效行数;

统计文件中各单词的出现次数;

按照字典序输出到文件txt;

获取词组;

输出。

在完成以上功能之后,继续完成命令行及gui界面开发。

(流程图见队友博客

(2)代码审查

代码规范

本次审查采用的是线下审查,每个人随时监督别人进度

1.排序算法:

在进行词组测试的时候发现排序算法出现了很大的问题,定位好问题之后很快就解决了这个问题

2.词组统计

在进行词组统计的时候发现经常空指针,调用时才发现是分割的时候插入了无法删除的空格。对此我们采取了隔位相取,通过计算的方式获取词组列表

3.规范

Design by Contract:我们采用了简易的规范,也就是首字母大写,驼峰命名法

Information Hiding:我们拥有一个方法类,其内部定义私有变量进行储存,对其他类来说是不可获取的

Interface Design:在完成所有功能之后,就回做图形界面

Loose Coupling:在这个方面因为代码较少,所以松耦合没有完美体现

(3)代码说明

结对之前

在读取文件的时候采取string builder类方法

在分割时采用直接分割

 

 

因为使用类储存数据,所以在交换时使用专门的函数

 

 

 

这些方法在之后有较大更改

1.在分割以及行数计算等问题采用正则表达式

2.在排序时利用一个类储存词频和单词,最后放入列表,用列表进行排序

其他见队友博客

(4)计算模块接口部分的性能改进

具体性能分析图见队友博客

在进行获取单词数组时我们有两种方式

 

 

这是采用字符分割,在字符分割的时候

 

 

采用正则表达式,两种方式经过性能分析之后,发现正则语法简单,但是时间相对变多了,字符分割代码虽多,但时间更少,所以,我们在代码较多的地方使用正则表达式,这样节省了代码量,也相对减少了运行时间

(5)性能分析及测试

具体见队友博客

 

 共测试了9个函数,都能够通过,特别注意的是测试词组的时候,因为词组数量是用户自定义的,所以测试的时候需要手动进行传值

(6)异常处理

具体见队友博客

主要问题为用户输入的不确定性

 

 用户如果输入错误,则进行相应的提示

(7)结对感受

1.在编程方面:两个人的力量确实1+1>2,在进行编程的时候能精准的定位错误,并且能够搞笑的修改。这是这次结对编程我最大的收获

2.在结对编程时,分工是我们这次失误的地方,不过后来结对的时候很好的解决了这个问题

总的来说这是一个良好的开端,我充分了解到了结对编程的好处,一审一写,一写一审,既起到了监督的作用,还起到了 相互学习的作用

posted @ 2019-10-14 11:05  R师傅  阅读(178)  评论(2编辑  收藏  举报