第一次个人编程作业
github
PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(min) | 实际耗时(min) |
---|---|---|---|
Planning | 计划 | 20 | 30 |
Estimate | 估计这个任务需要多少时间 | 20 | 30 |
Development | 开发 | 1710 | 2310 |
Analysis | 需求分析 (包括学习新技术) |
900 | 1200 |
Design Spec | 生成设计文档 | 0 | 0 |
Design Review | 设计复审 | 30 | 20 |
Coding Standard |
代码规范 |
40 | 60 |
Design | 具体设计 | 60 | 100 |
Coding | 具体编码 | 500 | 640 |
Code Review | 代码复审 | 60 | 110 |
Test | 测试 (自我测试,修改,提交修改) |
120 | 180 |
Reporting | 报告 | 75 | 75 |
Test Report | 测试报告 | 20 | 30 |
Size Measurement | 计算工作量 | 15 | 15 |
Postmortem & Process Improvement Plan |
事后总结 |
40 | 45 |
合计 | 1805 | 2415 |
计算模块接口的设计与实现过程。
这次代码的核心是正则表达式。刚开始json文件看的一脸懵,完全没接触过的知识,慢慢的学会它的函数,c++又要让我吐槽的是还得自己配置json的头文件....那过程实在是太曲折了....前期先是了解正则表达式的规则,每一个字符正则代表的意思你都看得懂,但是组合在一起就是妖魔鬼怪!! 而且痛苦的是网上的正则教程十有八九都是java的版本,c++能用的函数实在是太少了。地址要做的第一步处理就是把手机提取出来,下一步开始匹配难度类型,再把名字根据‘,’分割出来,剩下的就是最主要处理的地址了。c++不能一次完成整个字符串的match,所以我采用分开抓出来。先把省份提取出来,如果没有匹配到,则进入省的数组进行匹配,比较特别的是要先提取出直辖市进行对比。接下来再进行市、区等的匹配,与匹配省的过程类似。而c++的中文字符串不能匹配,实在是很坑。这时我去网上参考了一个中文匹配子串的函数。代码如下:
vector<int> stringToVecInt(const string &str) { union { char c[2]; int i; } convert; // 段位清零 convert.i = 0; vector<int> vec; for (unsigned i = 0; i < str.length(); i++) { // GBK编码首字符大于0x80 if ((unsigned)str[i] > 0x80) { // 利用union进行转化,注意是大端序 convert.c[1] = str[i]; convert.c[0] = str[i + 1]; vec.push_back(convert.i); i++; } else // 小于0x80,为ASCII编码,一个字节 vec.push_back(str[i]); } return vec; } bool include(const string &str, const string &msg) { auto sour = stringToVecInt(str); auto find = stringToVecInt(msg); return search(sour.begin(), sour.end(), find.begin(), find.end()) != sour.end(); }
最痛苦的是,程序写完了上传GitHub的时候把自己的工程sln弄没了...然后自己重新编译原码的时候出现了看不懂的错误...最后挣扎的用python写了代码。思路和c++的是类似的。但唯一感动的就是再也不用烦恼输入输出为UTF-8格式了,也不用烦恼中文在字符串里面的操作了。最后一句python真香....
计算模块接口部分的性能改进/部分单元测试展示
百度完一脸懵逼,被代码折磨得脑袋不行的我选择放弃了....