结对伙伴学号 | 201831061211 |
结对伙伴博客地址 | https://www.cnblogs.com/xlog/ |
使用的Github项目地址 | https://github.com/Codesilly/WordCount |
一、结对过程
(一)设计过程
(1)由于我们需要计算单词、字符和行数的个数,所以我们选择通过用分隔符来判断单词是否结束以及行数的个数。其中分隔符分别有'\t' ' ' '\n' ','。因此我们首先判断文件中每个字符是否为分隔符。
判断'\t'
...
bool isTab(char c) { if (c == '\t') { return true; } else { return false; } }
...
判断' '
...
bool isSpace(char c) { if (c == ' ') { return true; } else { return false; } }
...
判断','
...
bool isTab(char c) { if (c == ',') { return true; } else { return false; } }
...
判断'\n'
...
bool isNewline(char c) { if (c == '\n') { return true; } else { return false; } }
...
(2)在判断为分隔符后,每判断出一个字符,所以charcount每次都加一;继续判断是否为分隔符,如果不是分割符,wordcount继续加一;继续判断过程中,如果是换行符,linecount加一,如果是另外三个分隔符,则代表单词结束。 最后如果wordcount=0,则linecount=0;如果word count!=0,则linecount+1。
...
void CountWord()
{
char c;
c = fgetc(file);
while (c != -1) { charcount++; if (!isSeparator(c)) { wordcount++; while ((c = fgetc(file)) != -1) { charcount++; if (isNewline(c)) { linecount++; break; } else if (isSpace(c) || isTab(c) || isComma(c)) { break; } } } else if (isNewline(c)) { linecount++; } } if (charcount == 0) { linecount = 0; } else { linecount++; } }
...
(3)最后就是我们的文件操作,我们队使用的是C++语言,所以关于文件操作可以直接使用头文件。argv[]具有系统路径和命令行参数,通过使用strcmp()函数进行比对系统自带参数,对文件进行必要的操作。
(二)代码规范
由于我们所学的语言有限,所以我们队采取使用C++来编写这次的作业,C语言与C++的语法很多相似所以也融入了一部分C语言,所采用的代码规范:https://zhuanlan.zhihu.com/p/54613670
(三)效能工具测试
我和结对伙伴一起简单做了一下效能测试,下图是测试的结果
二、PSP表格
PSP2.1 | Personal Software Process Stages | 估计耗时(min) | 实际耗时(min) |
Planning |
计划 | 30 | 30 |
Estimate | 估计这个任务需要多少时间 | 1580 | 1800 |
Development | 开发 | 1100 | 1325 |
Analysis | 需求分析(包括学习新技术) | 60 | 60 |
Design Spec | 生成设计文档 | 70 | 80 |
Design Review | 设计复审(和同事审核设计文档) | 40 | 60 |
Coding Standard | 代码规范(为目前的开发制定合适的规范) | 15 | 20 |
Design | 具体设计 | 110 | 140 |
Coding | 具体编码 | 800 | 1000 |
Coding Review | 代码复审 | 80 | 100 |
Test | 测试(自我测试,修改代码,提交修改) | 240 | 300 |
Reporting | 报告 | 30 | 40 |
Test Report | 测试报告 | 15 | 20 |
Size Measurement | 计算工作量 | 60 | 80 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 40 |
合计 | 1580 | 1800 |
三、总结
本次作业对于代码量尚且不足的我来说具有一定的难度,好在有一位善于编程的结对伙伴,让这次的作业能够按时完成,也让我学到了很多自己不熟练和没掌握的技术,我们遇到了很多麻烦,也花了很多时间去解决,时间的利用效率还不够高,不过我相信有了这次结对编程的经验,我以后肯定能一步步提高,最终能自己解决各种问题。
(此图为一起讨论时的照片)