第三次作业——结对编程
github地址 | https://github.com/damaoya |
结对伙伴的作业地址 |
https://www.cnblogs.com/ArthurUnreal/p/10659810.html
|
一.设计与讨论
1)下面是我和结对伙伴的讨论照
2)PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 25 | 30 |
Estimate | 估计这个任务需要多少时间 | 25 | 30 |
Development | 开发 | 870 | 1000 |
Analysis | 需求分析 (包括学习新技术) | 60 | 50 |
Design Spec | 生成设计文档 | 30 | 25 |
Design Review | 设计复审 (和同事审核设计文档) | 60 | 40 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 20 | 15 |
Design | 具体设计 | 75 | 80 |
Coding | 具体编码 | 450 | 500 |
Code Review | 代码复审 | 105 | 160 |
Test | 测试(自我测试,修改代码,提交修改) | 70 | 130 |
Reporting | 报告 | 80 | 80 |
Test Report | 测试报告 | 30 | 30 |
Size Measurement | 计算工作量 | 20 | 25 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 30 | 25 |
| 合计 | 1620 | 1840 |
3)项目设计思路
- 此次设计的程序主要是在字符串的操作上,所以对文件方面就不会有太过复杂的操作,我们第一个想法是从文件中读出所有内容并保存到一个字符串后,就结束所有的文件操作(基础功能方面)。
- 之后的第一个要求是统计文件字符数(除汉字),去汉字后引用string.Length语句就能轻松办到。
- 第二个要求需要统计单词数,要求较复杂,我们的想法起初是直接按照ToLower().split(' ',','),按空格和‘,’分离每个单词并小写化后成为数组单元,然后直接进入循环判断,但是实际操作的时候出现了问题,单用split()并不能去除换行符,于是伙伴建议在split()前使用Replace()语句将换行符"\r\n"换成空字符"",但是最后的结果反而多出了为空的元素(可能里面是空格或者其他的东西),所以使用了GetHashCode()语句得到此元素的哈希代码,做了个判断语句以去除该元素。默认所有数组元素为单词,将计为总数,然后判断数组若小于4以及数组元素大于4时若前4位元素的Ascii码是否为a—z之外,若满足条件,则在总数中减去1。
- 行数可以直接通过统计从未去换行符之前的数组元素获得,关键语句IndexOfAny(),所以找行数的步骤可以直接在统计单词时进行。
- 第五个要求我们试图引用了第二个要求里的数组,引用了计数数组和排序集合Dictionary<string,int>,然后将排序后的集合与计数数组一一对应,然后输出。
4.基础功能的步骤设计图
二、代码说明
1.详见结对伙伴
2.效能分析
三、代码规范
1.函数名直接使用英文单词,保证更快速的读懂代码。
2.一个类实现一个功能。
3.括号上下对齐。
4.变量名私有化。
5.尽量的注释。
四、代码复审