第四次做业-《结对编程》

fork仓库地址 地址
github地址 git
结对伙伴学号 201731062518
结对伙伴博客地址 伙伴博客

1.结对过程

  • 在明理楼的一个教室里一块儿对项目进行了分析。对项目进行分工,作了需求分析。一个项目开始于需求调研,所谓“千里之行,始于足下”、“好的开始是成功的一半”、作到事半功倍,有了好的需求分析,对于项目的顺利开展很重要,尤为是能够避免后期开发过程出现纰漏。而后讨论了要写多少类,咱们一人负责一块,我负责接口方面,伙伴则负责调用方面。已经把类名、方法那些定义好了,这样整合起来代码可以跑起来。

    在接口的设计过程当中,我按照题目的要求设计了计算总字符个数、计算文本中总单词数、计算文本总行数、计算文本中每一个单词出现的次数、将结果写入文件等方法,再最初的编码时,遇到了一些瓶颈,也是网上找方法、查资料,才解决了的。在代码复审的过程当中,我和伙伴发现了我本身有些方法写的不是很好,逻辑上的处理有点瑕疵,而后一块儿商讨进行了改进。

    而后参考了c#的代码规范,就开始了代码的编写,最后把两我的的整合起来,进行单元测试和结果测试,而后往GitHub上面迭代传送。

    结对以下图:
    Image texthtml

    2.psp表格

    PSP2.1 personal software process stages 预估耗时(分钟) 实际耗时(分钟)
    planning 计划 35 45
    estimate 估计这个任务须要的时间 65 60
    development 开发 50 60
    analysis 需求分析(包括学习新技术) 15 15
    design spec 生成设计文档 10 15
    design review 设计复审(和同事审核设计文档) 10 10
    coding standard 代码规范(为目前的开发制定合适的规范) 5 5
    design 具体设计 20 30
    coding 具体编码 90 120
    code review 代码复审 45 60
    test 测试(自我测试,修改代码,提交修改) 60 80
    reporting 报告) 100 100
    test report 测试报告 45 50
    size measurement 计算工做量 20 20
    postmortem&process improvement plan 过后总结,并提出过程改进计划 15 10

    3.解题思路分析

  • 咱们这里设计了一个count接口,以及count接口的实现类,再来一个调用类。最后再来一个单元测试类。接口里面有计算总字符个数、文件中总单词数、文本总行数、每一个单词出现的次数、写入文件的方法。而后就是各个方法就是去实现项目所要求的基本功能。
    Image text
  • program类:调用接口实现类
  • Count接口:定义方法
  • count类:实现接口,实现其方法
  • 程序流程图:
    Image text
  • 如何体现"Design by Constract"、"Information Hiding"、"Interface Design"、"Loose Coupling"等原则
  • Design by Constract(契约式设计):按照某种规定对一些数据等作出约定,若是超出约定,程序将再也不运行,例如要求输入的参数必须知足某种条件。
  • Information Hiding(信息隐藏):是指设计和肯定模块时,使得一个模块内包含的特定信息(过程或数据),对于不须要这些信息的其余模块来讲,是不可访问的。
  • Interface Design(接口设计):设计接口分析的角度要统一明确。接口的命名要规范。
  • Loose Coupling(松耦合):松耦合的目标是最小化依赖。松耦合这个概念主要用来处理可伸缩性、灵活性和容错这些需求。同时意味着更多的开发以及维护工做量。git

    4.设计实现过程

  • 1.Count接口中的方法
    Image text
  • 2.count去实现该接口,具体把方法实现出来
    Image text
    Image text
    这里设计好后,和队友的整合起来。在本身桌面上建立两个txt文件,3.txt是读入文件,4.txt是写入文件。
    运行后结果以下图:
    Image textgithub

    5.代码复审

  • 咱们的功能是分开写的,全部没整合以前是不知道整合起来代码到底能不能能跑起来。代码的规范来讲,咱们两我的写的仍是合乎要求,两个对代码进行互评,查找错误的地方。
  • 两个整合事后,对代码进行运行,发现报了一堆错,多是两个整合起来,对象名没一致,致使的错误。
  • 有助于双方熟悉对方写的代码。
  • 查到了本身的有些逻辑上的错误,同时队友还给出了优化算法的建议。
  • 后面在cmd里面运行时发现输入命令后,并无跳出正确的结果,才发现本身写接口方法的时候,没有写输出路径。这个是队友帮我发现的
  • 代码规范(参考)--规范的代码

    规范的代码能够提升开发效率。

    养成代码规范的习惯,有助于自身的成长。

    规范的代码能够下降维护成本。
    算法

    6.单元测试

  • 单元测试以下:
    Image text
    发现出错了,修改代码中assert.areEqual方法中的参数,成功经过测试,也成功读入测试的输出目录。
    Image text编程

    6.接口性能改进和测试

  • 这里对接口进行改进,是我结对队友想出来的。设计一个抽象Statistical类,最后将具体词频统计的各个功能进行分离,使用工厂方法模式,将代码重构,方便了以后若是要增长其余功能,可直接添加其余具体操做词频的具体工厂便可,就无须整个改动代码。
    Image text
  • 性能测试
    Image text
    Image textc#

    7.异常处理说明

  • 假如在cmd里面输入非项目要求的命令,就会报错。咱们这里使用了数组限制了输入的命令。
    Image text
    解决这里异常,咱们可使用try 和catch块提供得一种结构化的异常处理方案,try catch自己并不会影响系统的性能,在没有发生异常的时候try catch是不会影响系统性能的。受影响的时候是发生异常的时候。数组

    8.附加功能

  • 支持两种导入单词文本的方式:①导入单词文本文件,②直接在界面上输入单词并提交
    提供可供用户交互的按钮和,实现-i -m -n -o 这四个参数的功能,对于异常状况须要给予用户提示。
    将结果直接输出到界面上,并提供“导出”按钮,将结果保存到用户指定的位置。
    结合博客要求增长的功能,这里我和队友对发布的要求的理解“提供可供用户交互的按钮和,实现-i -m -n -o 这四个参数的功能”应该就是设计一个能够供用户与系统交互的界面,也就是实现咱们以前设计的cmd读入-i -m -n -o命令的效果。设计效果以及最终测试以下:
    首界面:
    Image text
    导入文件:
    Image text
    Image text
    Image text
    结果以下:
    Image textpost

    9.上传github

  • 在本地上往本身Github仓库先传入文件,提交了三次。
    Image text
    Image text
    再签入老师GitHub。
    Image text性能

10.总结

  • 在结对的过程当中仍是有所收获的,虽然两我的的编码能力不一样,咱们仍是积极探讨如何才能把项目作到最后,两我的各负责一个版块,最后再结合起来。这样作的话,前期要把需求分析作好,才能避免后面两人产生分歧。整体来讲,我感受咱们可能作到了1+1=2,恰到好处的那种,两我的在最终的整合阶段,相互给对方写的版块提出一些改进上的建议。此次结对编程我也学到了不少,要作到前车可鉴,不能盲目的就直接开始敲代码;两我的要熟悉对方的工做方式,要团结一致,互相激励,遇到问题一块儿分析解决。
相关文章
相关标签/搜索