第一次个人编程作业

第一次个人编程作业

求求测评的同学用测评工具的时候,用单点模式,循环模式测我的代码会有问题,好人一生平安!!!!!

真是一次苦涩的经历

个人仓库地址

个人仓库

PSP表

psp2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 10 40
Estimate 估计这个任务需要多少时间 600 10
Development 开发 600 850
Analysis 需求分析 (包括学习新技术) 120 150
Design Spec 生成设计文档 20 30
Design Review 设计复审 30 45
Coding Standard 代码规范(为开发制定合适的规范) 15 25
Design 具体设计 100 110
Coding 具体编码 150 175
Code Review 代码复审 30 30
Test 测试(自我测试,修改代码,提交修改) 150 200
Reporting 报告 40 60
Test Repor 测试报告 10 10
Size Measurement 计算工作量 20 25
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 20 30
Total 总计 1375 1840

模块接口的设计和实现

主要的类:

class AnswerPart1:
    level = ""
    name = ""
    phoneNumber = ""
class AnswerPart2:
    province = ""
    city = ""
    area = ""
    town = ""
    detail = ""
    road = ""
    number = ""
    preciseAddress = ""

这两个类主要是拿来存答案和计算模块的信息传递

主要的计算函数模块

def getIn():
def getOut(ap1,ap2):
def getBasisMessage(s):
def getLevel(s):
def getName(s):
def getPhoneNumber(s):
def cutSame(s1,s2):
def getroad(s):
def getnumber(s):
def findarea(aareas,s):
def findcity(cities,s):
def getAddress(address):

主函数

def main():

调用关系

编写思路与关键部分

本来想正则搞定一切来着,写着写着发现不大对。还是和同学要了有全国四级行政划分的json文件
也没什么核心思路和独到之处,完全就是见山开路,遇河架桥
能搜到的就搜,搜不到的正则

计算模块借口部分与实现过程

本来做的时候,大家都说input的部分会耗用时间最多
这是一件自然而然的事,毕竟要等待IO输入
我就将需要数据直接写在了代码里,我觉得主要可以更好地看看是哪部分在运行时最慢

结果如下


可以看到主要耗时在getAddress函数
而其中最耗时的部分又在从外部导入json文件

其实这也很好理解
其他部分耗时倒是不多

计算模块部分单元测试展示

测试代码

class MyTestCase(unittest.TestCase):
    def test_cutSame(self):
        cut = tt.cutSame("福建省","福建")
        self.assertEqual( cut,"省")
        cut = tt.cutSame("闽侯县", "闽侯")
        self.assertEqual(cut, "县")
        cut = tt.cutSame("鼓楼区","鼓楼")
        self.assertEqual( cut,"区")
        cut = tt.cutSame("乌鲁木齐市", "乌鲁木齐")
        self.assertEqual(cut, "市")
    def test_getroad(self):
        cut = tt.getroad("湖滨路110号湖滨大厦一层")
        self.assertEqual(cut,"湖滨路")
        cut = tt.getroad("五一北路123号福州鼓楼医院")
        self.assertEqual(cut, "五一北路")
        cut = tt.getroad("东大街1号北京市东城区人民法院")
        self.assertEqual(cut, "东大街")
    def test_getnumber(self):
        cut = tt.getnumber("110号湖滨大厦一层")
        self.assertEqual(cut,"110号")
        cut = tt.getnumber("123号福州鼓楼医院")
        self.assertEqual(cut, "123号")
        cut = tt.getnumber("1号北京市东城区人民法院")
        self.assertEqual(cut, "1号")
if __name__ == '__main__':
    unittest.main()

结果和覆盖率


因为我的代码耦合性太高了,所以对于单独一级的代码测试效果并不好。(懒得解耦)

计算模块部分异常处理说明

等级判断不出来的时候按照七级来划分。
小张,福18150632336建福州龙江街道福山路.
说好的省不能缺省呢,23333
3!牛多搓,来宾市金秀瑶15029285452族自治县六巷乡六巷街1号六巷乡人民政府.
还有就是到号也会缺失,在调用函数的时候也会出错,造成正则表达式找不到结果
2!戚形亮,河北省15184451587张家口怀安县头百户镇头百户派出所.
还有第六级地址划分的时候,找不到相应的关键词的时候,正则表达式也会出错
2!曾阀犬,天津河东区唐家口街道成林道63号天津工业大学15755715952.

这问题就很大

代码质量分析

报错什么倒是没有,但是不规范的地方还是很多,说明自己的代码质量并不高吧

收获

本来觉得是个很简单的作业(因为隔壁班已经做过了,很多经验和方法可以借鉴),但是还是不太顺利。

自己还是太菜了,加油学习吧!!!

PSP中已经有记录实际花费的时间

End

posted @ 2019-09-28 10:57  egoistor  阅读(176)  评论(1编辑  收藏  举报