github项目地址
伙伴做业连接
--------------------------------------------------html
结对编码过程:我与结对编码的同伴,首先是各自分别阅读项目条件,以后开始讨论各自对于此次做业的理解。随后咱们把本身要作的工做细致的分工,最重要的一点是缺点二人代码的链接方式,以便尽量少的对代码进行没必要要的修改,最后把写好的代码互相交换来审阅达到找出错误的目的。最后紧行代码的汇总调试,获得想要的结果。
- ——————————————————————————————— - |预估(分钟)\实际分钟| - 计划:10\15 - 预估项目耗时:190 \ 275 - 开发: 30 \ 90 - 需求分析:12 \ 15 - 生成设计文档:18 \ 20 - 设计复审:5 \ 5 - 代码规范:5 \ 5 - 具体设计:5 \ 15 - 具体编码:30 \ 35 - 代码复审:10 \ 15 - 测试:20 \ 20 - 报告:10 \ 10 - 测试报告:10 \ 10 - 计算工做量:5 \ 5 - 过后总结:20 \ 20 - 合计:190 \ 275 - ———————————————————————————————
咱们将做业分红两个部分,即文件操做以及字符的识别与计数。我负责的是对文件的操做以及指出同伴编码的错误。对于字符的计数,为了节约内存打算使用动态的内存申请,经过遍历链表来判断是不是新字符以及增长次数,同时用结构体来进一步的简化代码。首先是关于c++的空间申请,由于从未学习因此在博客园上寻找相关的知识内容;对于文件操做,经过打开文件,使用文件类的getline函数,将文件里面的字符储存到数组里面,而后开始进行操做。由于事先还未学习,便在上面画了大量时间学习,找到一个合适的函数或方法可以很好的录入文件内容。
为了使得字符与字符数量紧密结合与代码简化,咱们决定使用结构体来经行工做,同时创建一个类来捆绑相关函数的使用同时确保数据的安全性,其私有成员是字符总数与一个指向结构体的指针(其做用为头指针)。函数分为指针初始化函数,字符计数函数,与链表打印函数。字符计数函数形参为字符数组,完成与文件操做的交接。
- 对于命名除了无关变量以外其他所有使用英文命名,若是存在多个英文则使用' _ '字符隔开,其他空格与缩进彻底遵循vs2019自动隔开。 - 代码互审:在完成一个模块后互相审核与测试,其中代码错误有链表头指针为空,文件地址不正确,数组的数据溢出。
int fun(char b[]) { int a; set(); for (a = 0; b[a] != '\0'; a++) { char_counter(b[a]); } return 0; }
- 代码改进:最开始是打算把识别与计算分开后来发现这么一来会遍历两次链表,形成效率下降,后来使用if语句来实现是否为新字符,以此来进行操做。
- 对字符及其操做封装为一个类来,包含链表建立,字符计数与识别和打印。保护数据与实现代码简洁。
class way_to_char { public: int set() { use = new struct zifu; use->next = NULL; if (use == NULL) { cout << "分配内存失败" << endl; } cout << use << endl; return 0; } int char_counter(char b) { if (use == NULL) { return 0; } struct zifu* p; for (p = use->next; p != NULL; p = p->next) { if (p->word == b) { p->number++; char_number++; return 0; } } p = new struct zifu; p->word = b; p->number = 1; p->next = use->next; use->next = p; char_number++; return 0; } int show() { if (use == NULL) return 0; struct zifu* p; char stead; cout << "总的字符数为" << char_number << endl; for (p = use->next; p != NULL; p = p->next) { if (p->word >= 65 && p->word <= 90) stead = p->word + 32; else stead = p->word; cout << "字符为" << stead << "出现次数为" << p->number << endl; } return 0; } int fun(char b[]) { int a; set(); for (a = 0; b[a] != '\0'; a++) { char_counter(b[a]); } return 0; } private: struct zifu* use; int char_number = 0; };
结对编程最开始的难题不是项目,而是两人的配合问题,针对同一个任务意见上总会产生分歧,致使迟迟没进展。但随着时间推移,两人步调渐渐一致,能互相理解对方代码的意图并进行审核,提高了代码质量。一旦编码有纰漏另外一方总能指出,效率相比一人提高了很多。