github地址:链接

结对伙伴作业地址:链接

一,本次作业和室友结对,三人一起合作完成本次作业。结对过程中,三人都遇到很多困难,但都努力寻找错误的根源并解决困难。

相互学习和相互帮助。本人负责输入和输出,统计字符数和行数。以下为结对编程时的照片:

二,结对的PSP表格

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 30  45

· Estimate

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

 30  45

Development

开发

 935  1200

· Analysis

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

 30  45

· Design Spec

· 生成设计文档

 30  35

· Design Review

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

 45  60

· Coding Standard

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

 20  10

· Design

· 具体设计

 60  75

· Coding

· 具体编码

 660  900

· Code Review

· 代码复审

 30  30

· Test

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

 60  45

Reporting

报告

 50  55

· Test Report

· 测试报告

 20  25

· Size Measurement

· 计算工作量

 15  20

· Postmortem & Process Improvement Plan

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

 15  10
 

合计

 1015  1300

 

结对过程中预估时间和实际时间差距较大,编程时集中注意力的力度不够。

三,解题思路描述

    拿到题目时有一点懵,后来经过认真分析,查找资料发现并不是不能实现。比如,按照字典排序输出可以用到Dictionary来实现,

统计字符数、单词数、行数用循环来实现。输入输出文件都比较容易实现。经过这些分析,这些问题解决起来比较容易。

四,设计实现过程

    本人负责统计字符数和行数,以及从文件输入,输出。文件输入,输出是在上学期学的,有些遗忘,查阅了一些书籍才能完成。

至于统计字符数,从文件输入进来的是字符串数组,用for循环一次处理每一组字符串,再将字符串转化为字符数组进行统计,行

数较为简单不进行叙述。其余部分几人进行讨论进行。见结对伙伴博客

五,代码规范

    1,缩进:一个Tab,4个空格;

    2,对于不必要存在的{   }必须存在。比如,if语句中只有一句语句时,{}不必要存在,但在本规范中不能省略。

    3,一行不能存在多句语句。

    4,命名:变量:类型说明_单词:

                     函数名:首字母小写;

                     类名:首字母大写。

    5,注释:类前注释,函数前注释。

六,改进和效能分析

    见结对伙伴博客

七,代码复审

    在和伙伴编译完成代码后,三人相互交换电脑,根据三人一起制定的代码规范审查伙伴的代码,有违反规范的,

给伙伴说明并更改。我们在查看对方代码的时候多有对代码的疑惑,对于这些不是很清楚的地方我们又重新添加

了注释。

八,代码说明

    见结对伙伴博客

九,心得体会

    结对编程对我来说还是一个全新的编程形式,事实证明1+1+1>3,这次即使三个人在编程过程中相互帮助比一个人思考问题的时间大大缩短。在

编程期间,代码修改次数较多,主要是在设计阶段花费时间较少,没设计好就心急的编写代码,大忌啊。