• 第三次作业


    一。

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

     

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

     

     

     

     

     

     

  • 相关阅读:
    如何实现抢红包,100元6个用户抢,每个人抢的红包金额至少为10?
    秒杀项目中核心功能的实现
    如何判断一个单链表有环?
    Redis入门
    拼车
    微服务架构SpringCloud的理解
    Linux:移动当前目录的前N个文件到目标文件夹下
    Linux统计文件目录下文件的数目命令
    Python-目标检测-将xml文件转换成.txt文件
    Linux的命令合集
  • 原文地址:https://www.cnblogs.com/CHIQING123/p/10659152.html
Copyright © 2020-2023  润新知