结对编程
Github项目地址 | Github项目地址 |
---|---|
结对伙伴博客地址 | 博客链接 |
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 30 |
· Estimate | · 估计这个任务需要多少时间 | 20 | 25 |
Development | 开发 | 150 | 100 |
· Analysis | · 需求分析 (包括学习新技术) | 60 | 100 |
· Design Spec | · 生成设计文档 | 10 | 10 |
· Design Review | · 设计复审 (和同事审核设计文档) | 20 | 10 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
· Design | · 具体设计 | 120 | 60 |
· Coding | · 具体编码 | 720 | 400 |
· Code Review | · 代码复审 | 30 | 15 |
· Test | · 测试(自我测试,修改代码,提交修改) | 120 | 60 |
Reporting | 报告 | 30 | 25 |
· Test Report | · 测试报告 | 30 | 25 |
· Size Measurement | · 计算工作量 | 60 | 30 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计 | 30 | 60 |
合计 | 1430 | 960 |
计算模块接口的设计与实现过程
整体思路流程图:
代码复审过程
代码规范 | 具体说明 |
---|---|
函数名以及变量名 | 以名字的英文形式呈现,读代码便于理解函数功能,名字注意大小写,一般变量用小写,函数名用大写 |
代码注释 | ①对代码加以注释,便于改动、查找、阅读 ②注释位置最好在被说明内容的前一行或后一行,而不是直接加在其后 |
代码布局 | ①每一行只写一句代码 ②每一行只对一个东西进行声明③ 在不同的定义之后加一行空白用以分开④注释位置最好在被说明内容的前一行或后一行,而不是直接加在其后⑤缩进控制在4个字符⑦在复杂的条件表达式中,用括号清楚地表示逻辑优先级 |
在和结对伙伴互审的过程中,因为刚开始我有些表达式没有括号,伙伴给我指出了问题,进行了一定的修改,让表达式看起来更加规范,易懂
计算模块接口部分的性能改进
对于计数功能的函数进行了类的封装,修改了函数的参数
字符获取修改了遍历的方案,通过翻书,再对文件流的学习,了解C++中文件流函数的成员函数,通过调用文件流的成员函数,设置文件内部指针,获取字符数
性能分析图:
单元测试展示:
因为在第二次作业中,没有弄明白Git的提交,所以这次和我的结对伙伴好好地研究了一下git的提交:
计算模块部分异常处理说明
(1)因为未学习到C++中的文件流操作,所以文件操作一开始采用的是C中fopen函数,但编译器显示不安全,因此对文件操作,学习了C++的文件流操作后采用C++中的文件流操作
(2)计数封装过程中出现形参与实参的不兼容和文件流成员函数read函数第一个参数的不兼容,对此通过 new char[length]来改进,实现兼容
描述结对的过程
个人总结
这次结对编程虽然功能实现的不完整,但从此次编程中,我学到很多新知识,重温了很多旧知识,也发现了自身的编程能力仍存在很大缺口,还需要多练多学,其次在编程的后续过程中,我发现自身因为知识储库的不足,在实践过程有些思绪就变得非常模糊,导致编程的滞后,然后通过查阅书籍和观看别人博客中自己出现的异常错误,进行逐一地修改,使得功能规划地再次更改,慢慢达到所需实现的功能。总结下来,自身的编程能力仍需要多加练习,对于理论和知识点应加以实践,学习一些软件框架的构建,使得以后的设计规划更完善。
并且在此次结对的编程中,我十分的感谢我的结对伙伴,因为水平相似,我们都去学习了很多新的知识,在遇到难题时,她也帮我解决一些疑难问题,并且有她在旁边的监督,也提高了我的编程效率,切身体验到了1+1>2的效果