第三次作业—Wordcount

一、地址

Github项目地址:https://github.com/1320068008/WordCount-1

 

同伴蒋鑫作业地址:https://www.cnblogs.com/JxsBK/p/10659511.html

二、结对过程

室友组队,编程过程中两人一直在一起,共同思考,我主要文件读入和核心功能部分的编码,他负责文件写入和测试。

 

三、PSP表格

 

PSP2.1

Personal Software Process Stages

预估耗时

实际耗时

Planning

计划

 20min

 15min

· Estimate

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

(从开始项目到结束,不是连续)

 4day

 3day

Development

开发

 3day

 2day

· Analysis

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

 20min

 15min

· Design Review

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

 5min

 5min

· Coding Standard

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

 10min

 10min

· Design

· 具体设计

 1h

 2h

· Coding

· 具体编码

 3day

 2day

· Code Review

· 代码复审

 2h

 1h

· Test

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

 4h

 3h

· Postmortem & Process Improvement Plan

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

 1h

 1h

  

合计=Estimate

 4day

 3day

四、解题思路

先将文本文件传入,在实现核心功能,在写入文件

运用了dictionary类型,在计数、排序方面提供了简明的帮助,还用了streamreader、file类型,对文件的操作提供了简明的方法(询问同学和百度,以及vs的注解得到用法)

五、 设计实现过程

在简单的讨论之后,我和蒋鑫设计了如下的流程图

 

以下是实际的一些改动

  1. 文件操作类包含了"文件的写入"和调用"核心功能类"
  2. 核心功能类包含了计算Ascii字符总数、有效行数、词组和单词频率和文件写入函数
  3. 主函数类包含了增强功能的代码 

六.代码规范

  1. 缩进:用一个tap 键。
  2. 行宽:限定100个字符。
  3. 括号:对于复杂的表达式,要用括号清楚的表示逻辑优先级。
  4. { }括号:循环或选择语句即使只有一句也要用 { } ,且{ } 都要单独占一行。
  5. 分行:除了同类型的变量的定义在一行,其他不同的语句要分行写。
  6. 命名:首字母要大写,关键变量命名要能清楚的表达变量的含义;若名称以多个单词为名,单词与单词之间要用 "_" 连接。
  7. 注释:在每个函数前注释清楚函数的用途和意义较复杂的变量的文字解释。

    问题:在修改代码后很多首行缩进都不符合要求,需要单个的修改。

七、性能分析

 

八、代码分析

 

 

核心代码如上图

 我们的代码分两大部分,一是文件操作二是核心功能

我们把核心功能各类了出来放在了另一个类中,再在另一个类中调用,在主函数中还有一部分判断是对Cmd,对i o m n 命令语句做了判断的功能

 

 

九、总结

本次结对编程我觉得是1+1>2的,我们完全是在一起编写完成这个项目,一个人的思考有限,在遇到问题时,两个人有更多的方法解决,但是也需要两个人相互配合。

结对编程的缺点:两人一起编程久了,两个人的思路有时不清晰,思路有时会混乱,特别是测试检验修改的时候。

遇到的问题:由于我们的输出前n 个单词和输出m 个单词组成的数组为一个函数,调用时发现两个输出的都是m个单词组成的词组

       解决:从新命令了一个对象,做同样的操作,得到两种输出。

我们一开始创建GitHub库的时候,没有fork给出的连接,后来在3次上传完成后意识到问题,询问助教,把我们这个库的内容又Clone了过去但就只有一次Commit

 

posted @ 2019-04-05 18:24  pianoman  阅读(189)  评论(0编辑  收藏  举报