第三次作业

一。

结对项目地址: https://github.com/xuyixiaowoaini/WordCount.git

结对伙伴作业地址:https://www.cnblogs.com/TakeRabbit/p/10637605.html

                    

    

  1. 描述结对的过程,提供非摆拍的两人在讨论的结对照片(一起工作编码时的照片)。

我与我的结对同学先把项目需要完成的功能划分为几个模块,再一起填写psp表格进行分工,我们各自完成分配的任务,中途遇到问题再一起查资料解决,最后我们将两部分互相审查好的代码合并起来。

 

PSP表格。

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 5min

 5min

· Estimate

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

 5

 5

Development

开发

 720

 810

· Analysis

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

 60

 120

· Design Spec

· 生成设计文档

 10

 10

· Design Review

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

 10

 10

· Coding Standard

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

 10

 10

· Design

· 具体设计

 30

 60

· Coding

· 具体编码

 360

 360

· Code Review

· 代码复审

 60

 60

· Test

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

 180

 180

Reporting

报告

 130

 190

· Test Report

· 测试报告

 60

 120

· Size Measurement

· 计算工作量

 10

 10

· Postmortem & Process Improvement Plan

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

 60

 60

 

合计

 855

 1005

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

计算模块的 设计

拿到题后,我和小伙伴先对项目作出来分析,

这个项目有五个基本功能点:计算Input文件的字符数、单词总数、有效行数、单词出现次数并排序,以及输出到Result文件。

这些功能总体由三个类来完成:

(1)WordIO(实现输入文件以及输出文件的功能)

(2)WordTrie(实现计算单词出现次数并排序的功能)

(3)WordCalculate(实现计算字符数、单词总数、有效行数的功能)

大致结构如图:

 

 

 

代码复审过程。

1、代码规范

参考https://wenku.baidu.com/view/b5be911b6bd97f192279e9bd.html。

2、代码互审情况、发现的问题

 我们完成这个项目时基本是在一起讨论编程的,因此最后没有发现什么大的问题,只是合并时改了不同的参数,以及对代码规范的问题进行了一些修改。

性能分析

 

代码详情:

 

 见队友链接:  https://www.cnblogs.com/TakeRabbit/p/10637605.html

单元测试:

共实现了四个测试内容:1.单词以英文字母开头

                                        2.单词以分隔符分割

                                        3.统计有效行数

                                        4.字母后可跟数字

代码详情:

 

 using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using WORDCOUNT;

namespace TestWORDCOUNT
{
    [TestClass]
    public class UnitTest1
    {
        

        [TestMethod()]
        public void MainTest01()
        {
            string test;
            Program.Result trueres = new Program.Result();
            string reason;
            test = "123abcd";
            trueres.charactersnumber = 7;
            trueres.wordsnumber = 0;
            trueres.linesnumber = 1;
            reason = "测试用例1";
            UnitTest(test, trueres, reason);

        }
        
        [TestMethod()]
        public void MainTest02()
        {
            string test;
            Program.Result trueres = new Program.Result();
            string reason;
            test = "abcd abcd@abcd";
            trueres.charactersnumber = 14;
            trueres.wordsnumber = 3;
            trueres.linesnumber = 1;
            reason = "测试用例2";
            UnitTest(test, trueres, reason);
        }
        
        [TestMethod()]
        public void MainTest03()
        {
            string test;
            Program.Result trueres = new Program.Result();
            string reason;
            test = "abcd\n\nabcd";
            trueres.charactersnumber = 8;
            trueres.wordsnumber = 2;
            trueres.linesnumber = 2;
            reason = "测试用例3";
            UnitTest(test, trueres, reason);
        }
        
        [TestMethod()]
        public void MainTest04()
        {
            string test;
            Program.Result trueres = new Program.Result();
            string reason;
            test = "abcd123";
            trueres.charactersnumber = 7;
            trueres.wordsnumber = 1;
            trueres.linesnumber = 1;
            reason = "测试用例4";
            UnitTest(test, trueres, reason);
        }
        
        public void UnitTest(string test, Program.Result trueres, string reason)
        {
            FileStream fs = null;
            StreamWriter sw = null;
            bool result = false;
            string pathinput = "F:\\Demo.txt";
            Program.Result testres = new Program.Result();
            result = false;
            fs = new FileStream(pathinput, FileMode.Create);
            sw = new StreamWriter(fs);
            sw.WriteLine(test);
            sw.Close();
            fs.Close();
            testres = Program.Maintest();
            result =
                (testres.charactersnumber == trueres.charactersnumber) &&
                (testres.wordsnumber == trueres.wordsnumber) &&
                (testres.linesnumber == trueres.linesnumber);
            Assert.AreEqual(true, result, reason);
        }
    }
测试结果:

 

 

 心得体会:

 

1由于编程不熟悉,以及在实际的开发过程中遇到种种问题的阻挠,使得完成这个项目实际花费的时间远远大于预估计划的时间,并且一些功能也没有完善的很好,我感受到以后的学习还有很长的路需要去努力。

 

结对感受:第一次结对完成作业,在与小伙伴的交流和共同努力过程中,让我体会到了协作的重要性,并且在互审过程中彼此更容易发现错误,及时交流与该正,在这次的实际操作过程中,也让我对结对编程的认识更进了一步。

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/CHIQING123/p/10659152.html