仓库地址
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 30 | 20 |
Estimate | 估计这个任务需要多少时间 | 720 | 480 |
Development | 开发 | 180 | 150 |
Analysis | 需求分析(包括学习新技术) | 100 | 60 |
Design Spec | 生成设计文档 | 10 | 15 |
Design Review | 设计复审 | 5 | 6 |
Coding Standard | 代码规范(为开发制定合适的规范) | 8 | 12 |
Design | 具体设计 | 15 | 26 |
Coding | 具体编码 | 130 | 150 |
Code Review | 代码复审 | 15 | 20 |
Test | 测试(自我测试,修改,提交修改) | 16 | 26 |
Reporting | 报告 | 19 | 31 |
Test Report | 测试报告 | 11 | 15 |
Size Measurement | 计算工作量 | 5 | 15 |
Postmortem & Process Improvement Plan | 事后总结并提出过程改进计划 | 6 | 16 |
合计 | 1270 | 1022 |
解题思路
(1)首先根据","将名字分割开来
(2)然后根据电话号码是11位连在一起的情况,将电话号码分割
(3)然后慢慢根据省,市,区,镇慢慢分割
我所使用的正则表达式的出处:https://blog.csdn.net/superSubfn/article/details/80290491代码实现过程
因为都是字符串分割问题,所以我将这个写在了一个类里,单元测试,我是自己在百度地图上随意点一个位置,然后输入进去,独到之处,是我将省市等关键字的缺失做了特殊处理,虽然是比对,但是效率提高了很多。在改进程序性能上,花费了半个小时,我引入了一个表上面记录了我国各地的三级地址,一开始我是将所给字符串和所有的地址对比,这样极大的耗费了性能,后面我将地址分级储存,并且每次只比对前两个字,优化性能。
关键代码
String regex="(? [^省]+自治区|. ?省|.?行政区|)(? [^市]+自治州|. ?地区|.?行政单位|.+盟|市辖区|. ?市|)(? [^县]+县|.+?区|.+市|.+旗|.+海域|.+岛)?(? .+镇|.+街道)?(? . 街|. 路|.巷)?(? [\d]+号|)?(? .*)";//通过正则关键字来分割各个地区返回示例
[{"姓名":"李四","手机":"13756899511","地址":["福建省","福州市","鼓楼区","鼓西街道","湖滨路","110号","湖滨大厦一层"]},
{"姓名":"张三","手机":"13599622362","地址":["福建省","福州市","闽侯县","上街镇","","","福州大学10#111"]},
{"姓名":"王五","手机":"18960221533","地址":["福建省","福州市","鼓楼区","","五一北路","123号","福州鼓楼医院"]},
{"姓名":"小美","手机":"15822153326","地址":["北京","北京市","东城区","","交道口东大街","1号","北京市东城区人民法院"]},
{"姓名":"小陈","手机":"13965231525","地址":["广东省","东莞市","","凤岗镇","凤平路","13号",""]}]
模块接口性能
我在改进计算模块上花了大概半个小时,我将原本的和表中的省,市,比对,变成了通过比对前两个字,并分别截断几级地址来加快性能。
如图这个就是我的性能分析。
模块部分异常处理
我测试的是主函数。
箭头所示为覆盖率和我所测试的代码,我的思路是先求最简单的,省市都全,然后第二个测试是缺少省市,第三个测试是,第三个测试样例。
异常处理
- 我设计的第一个目标是检测我的正则找不到手机号
2!张三,福建福州福州大学. - 我设计未选择级别
王五,江苏省南通15659172166市天虹花园29号楼601.
小结
- 这个地址簿简直是方便我们学地理啊,我这种物化生真是谢谢老师了。。。
- 这个测试不明不白,我深感我是白痴?!
- 推荐以后测试用后端框架吧,没必要用移动端的gradle。
- 个人能力真的很有限,团结力量大。
- 好好学习,天天向上!