第一次编程作业

仓库地址

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="(?[省]+自治区|.*?省|.*?行政区|)(?<city>[市]+自治州|.?地区|.?行政单位|.+盟|市辖区|.?市|)(?[^县]+县|.+?区|.+市|.+旗|.+海域|.+岛)?(?.+镇|.+街道)?(?.街|.路|.巷)?(?[\d]+号|)?(?.*)";//通过正则关键字来分割各个地区

    返回示例

[{"姓名":"李四","手机":"13756899511","地址":["福建省","福州市","鼓楼区","鼓西街道","湖滨路","110号","湖滨大厦一层"]},
{"姓名":"张三","手机":"13599622362","地址":["福建省","福州市","闽侯县","上街镇","","","福州大学10#111"]},
{"姓名":"王五","手机":"18960221533","地址":["福建省","福州市","鼓楼区","","五一北路","123号","福州鼓楼医院"]},
{"姓名":"小美","手机":"15822153326","地址":["北京","北京市","东城区","","交道口东大街","1号","北京市东城区人民法院"]},
{"姓名":"小陈","手机":"13965231525","地址":["广东省","东莞市","","凤岗镇","凤平路","13号",""]}]

		

模块接口性能

我在改进计算模块上花了大概半个小时,我将原本的和表中的省,市,比对,变成了通过比对前两个字,并分别截断几级地址来加快性能。

如图这个就是我的性能分析。

模块部分异常处理

我测试的是主函数。

箭头所示为覆盖率和我所测试的代码,我的思路是先求最简单的,省市都全,然后第二个测试是缺少省市,第三个测试是,第三个测试样例。

异常处理

  • 我设计的第一个目标是检测我的正则找不到手机号
    2!张三,福建福州福州大学.
  • 我设计未选择级别
    王五,江苏省南通15659172166市天虹花园29号楼601.

小结

  • 这个地址簿简直是方便我们学地理啊,我这种物化生真是谢谢老师了。。。
  • 这个测试不明不白,我深感我是白痴?!
  • 推荐以后测试用后端框架吧,没必要用移动端的gradle。
  • 个人能力真的很有限,团结力量大。
  • 好好学习,天天向上!
posted @ 2019-09-16 19:46  宋奕  阅读(395)  评论(4编辑  收藏  举报