第三次作业

结对编程作业

本次作业地址 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2882
伙伴作业地址 https://www.cnblogs.com/lwy276701865/p/10658824.html
代码github地址 https://github.com/lwy276701865/WordCount.git

 

 

 

 

一、  PSP表格编写

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 30

 30

· Estimate

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

 30

 30

Development

开发

 660

1700

· Analysis

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

 120

 240

· Design Spec

· 生成设计文档

 60

 60

· Design Review

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

 100

 100

· Coding Standard

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

 30

 30

· Design

· 具体设计

 60

 100

· Coding

· 具体编码

 240

 1020

· Code Review

· 代码复审

 30

 60

· Test

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

 30

 90

Reporting

报告

 60

 50

· Test Report

· 测试报告

 20

 20

· Size Measurement

· 计算工作量

 10

 10

· Postmortem & Process Improvement Plan

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

 30

 20

 

合计

 750

 1780

二、设计思路与过程

  1、结对过程

   首先在下图位置输入结对伙伴的用户名

 

 

   然后复制链接发给结对伙伴,他点击之后即可拥有自己仓库的读写权限

 

 

 

   下图即为成功邀请伙伴加入自己的仓库

 

 

   这是我们讨论的照片(非摆拍):

 

  2、思路描述

   通过审题发现输入一个文件名后,需要对它进行4种操作,分别是:统计字符数、单词总数、有效行数、单词出现频率最大的10个单词。我们先查阅了面向对象程序设计(C#)教材关于文件的操作。首先需要读取文件,然后对字符串种类进行判断,这时候就需要写不同的函数或类来实现统计了。

   在经过一番讨论后这几个统计功能,我们发现些函数的话太复杂了,所以我们决定用正则表达式,所以我们在网上查阅了正则表达式的相关资料:链接

  3、设计实现过程

   我们编写了一个wordcount类,用来统计各个数据。里面有三个函数:countword,countline,countchar,分别是统计单词数、有效行数、字符数的。

   下面是流程图:

 

 

  4、代码规范

   ①功能注释:在每个函数上面写上它的功能的注释。

   ②变量命名:给变量命名时用英语,不用拼音。

   ③语句规范:使用循环时必须加花括号,并且里面的语句缩进一个TAB。

   ④视觉组织:必要时使用空行和缩进,比如每个函数之间、每个类之间都加一个空行。

   ⑤变量安排有序:定义变量时必须赋初值,一个变量占一行且定义在最前面(不允许在中间出现)。

   ⑥字段:属性全为public,方便后面单元测试。

   ⑦函数命名:函数名首字母大写。

三、代码审查

  1、类库生成dll组件

 

  2、自审与互审

   自审:我最先写的函数用了许多循环,和伙伴一起分析之后,发现这些函数耗费了许多不必要的时间。于是我们在讨论之后改变了一些算法。

   互审:我们发现两个人写的代码的参数不同,于是经过商量之后同一了函数的参数,并对相关内容进行了修改。然后我们是在做了第一版代码之后才进行的代码规范制定,于是很多之前的函数都需要重新写。

四、关键代码

  1、统计单词函数

 

  2、统计有效行数函数

 

  3、统计字符函数

 

  4、主函数中的控制函数

 

五、测试与性能分析

  1、单元测试

   这是测试统计字符数函数的,下面几个函数的测试方法一模一样

 

  2、性能分析

 

六、感受与总结

  第一次与他人结对编程,总体来说感觉挺好,基本上做出了1+1>2的感觉,在大部分环节中,都能做出互补,遇到问题时,对一个个问题提出了疑惑,并对其做出解决方案后,但是又发现了其他的小问题。然后虽然到最后我们还有一些功能没有实现,但我们还是学到了很多关于结对编程的知识,大概熟悉了是怎样操作的。

posted @ 2019-04-05 15:23  liyitongxue  阅读(211)  评论(0编辑  收藏  举报