第三次作业

一、结对过程

在文章开头给出你们Fork仓库的Github项目地址。(5')

Github项目地址

  https://github.com/umoonn/WordCount.git

结对伙伴的作业地址

 https://www.cnblogs.com/IUidol/p/10630735.html

我的博客地址

 https://home.cnblogs.com/u/junandlin/

作业链接

 https://www.cnblogs.com/junandlin/p/10630746.html

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

我和我的室友彭宇一起结对编程,制定代码规范,分工代码不同的函数功能,然后一起合并代码并进行测试

二、psp表格

    1. 在开始实现程序之前,在下述PSP表格记录下你估计将在程序的各个模块的开发上耗费的时间。
    2. PSP2.1

      Personal Software Process Stages

      预估耗时(分钟)

      实际耗时(分钟)

      Planning

      计划

       30分钟      25分钟

      · Estimate

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

       1590分钟     1295分钟

      Development

      开发

       1260分钟     1170分钟

      · Analysis

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

       40分钟      60分钟

      · Design Spec

      · 生成设计文档

       30分钟      35分钟

      · Design Review

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

       30分钟      20分钟

      · Coding Standard

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

       20分钟      20分钟

      · Design

      · 具体设计

       60分钟      55分钟

      · Coding

      · 具体编码

      1200分钟      900分钟

      · Code Review

      · 代码复审

       120分钟      30分钟

      · Test

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

       60分钟      50分钟

      Reporting

        报告

       150分钟      125分钟

      · Test Report

      · 测试报告

       60分钟      55分钟

      · Size Measurement

      · 计算工作量

       60分钟     40分钟

      · Postmortem & Process Improvement Plan

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

       30分钟     30分钟
       

      合计

       1800分钟     1230分钟

 

三、解题思路

     1. 解题思路描述。即刚开始拿到题目后,如何思考,如何找资料的过程。 

   进行分工时代码部分我负责统计单词数及词频,在写词频的时候对以前的集合部分有点忘了,哈希表,list<>等都试过,

但是总有错误,刚开始翻书没有找到解决问题的资料然后去网上找了找解决错误的方法,也请教了一下室友总算把问题解决了。

    2.设计实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?单元测试是怎么设计的?

引用组件

流程图

单元测试

断点测试

3. 给出你们制定的代码规范或链接,记录你们代码互审的情况,审查的模块名、发现的问题等。

代码规范:

目的:此次结对编程项目是和其他同学合作,分工合作编写功能代码以及测试代码等,为了方便后续方便操作以及代码互审等,一起商量并约定了编写代码的一些规范。

这里只一起制定了最常涉及到的部分的代码规范,更多涉及详细的代码规范约定参考并遵守下面的链接

https://wenku.baidu.com/view/e35e7c6626284b73f242336c1eb91a37f11132c3.html

1.命名规范:

①类型(类、结构)、字段、属性、方法命名:

优先使用对应的英文单词命名属性方法等,如果没有合适的英文,可以使用拼音命名,不要用缩写命名。注意约定方法等第一个英文字母大写。

如:public void countword(){}

②变量的命名:

优先使用对应的英文单词命名变量,变量命名都用英文小写字母。

避免使用长名字,不能超过15个字母。

char word;

③除for()循环以外,不能使用一个字母来命名表示变量。

  1. 注释规范:

①要给写的函数方法进行注释,注释其所实现的功能。

  public int countlines(string word)//统计行数

②要注释不易懂的变量,解释变量所表示的含义

int linesnum = 0;//行数

③注释不宜过长,能简单表达意思就行。

3.编码规范:

①先定义所有变量或全部实例化后,再进行编码。

②代码每一行不能过长。

③if()和else()语句后无论是一句代码或者没有,也一定要跟花括号

else{}

代码互审:

问题:没有按照一起制定的代码 规范的要求进行注释

解决方法: 再重新看前面写好了的代码规范要求对所写代码进行分部注释。

4.记录在改进程序性能上所花费的时间,描述你改进的思路,并展示一张性能分析图(由VS 2017的性能分析工具自动生成),并展示你程序中消耗最大的函数。

性能分析图

消耗最大的函数

5.代码说明。展示出项目关键代码,并解释思路与注释说明。

统计单词数

统计词频

结果图

 在这次结对编程中代码部分我负责统计符合要求的单词数及出现频率最高的十个单词。

在统计单词数的时候不知道怎么把那些符号除去提取出单词然后去找,发现要用正则表达式就去学了正则表达式怎么使用。

在统计词频时应为对前面所学的集合的知识很多都忘记了,又去慢慢查资料花了很长的时间才做出来 。(其他功能见同伴博客)

6.结合在构建之法中学习到的相关内容与结对项目的实践经历,撰写解决项目的心路历程与收获,以及结对感受,是否1+1>2。

在这次的结对项目里面我发现1+1是大于二的,有问题两个人一起思考比一个人思考更容易想出来。

更熟练地能够封装引用,学习了正则表达式并且对前面的集合方面的知识也有了很好的复习。

也更了解到了与他人合作做项目的好处。

原文地址:https://www.cnblogs.com/junandlin/p/10630746.html