第四次作业--结对编程

结对伙伴学号  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

三、总结

  本次作业对于代码量尚且不足的我来说具有一定的难度,好在有一位善于编程的结对伙伴,让这次的作业能够按时完成,也让我学到了很多自己不熟练和没掌握的技术,我们遇到了很多麻烦,也花了很多时间去解决,时间的利用效率还不够高,不过我相信有了这次结对编程的经验,我以后肯定能一步步提高,最终能自己解决各种问题。

 

 

 (此图为一起讨论时的照片)

posted @ 2019-10-16 00:46  starless  阅读(168)  评论(1编辑  收藏  举报