第一次做业正则表达式
1.度量分析编程
第一次做业的metrics图分析出现了标红的McCabe Cyclomatic Complexity和Nested Block Depth。McCabe Cyclomatic Complexity表示圈复杂度,而Nested Block Depth表示嵌套深度。标红的McCabe Cyclomatic Complexity代表类之间的职能分配不均匀。由于是第一次写做业,从始至终都只建了一个类,致使了一个类承担了全部的职能,圈复杂度出现了超标现象。标红的Nested Block Depth则表示嵌套现象严重。因为暴力的一次次匹配,不停的用if-else语句和while/for循环语句,致使嵌套不少。学习
2.类图测试
第一次做业,由于刚刚学习JAVA,对类和对象的概念不熟悉,基本按照过程化的思惟去写,因此只写了一个类。在这个类里,进行了全部的操做,致使这个类很是的冗杂。spa
3.关于BUG设计
第一次做业,要求用面对对象的思惟去看待问题,思考问题,解决问题。可是因为长期的面向过程编程,致使在写本次做业的过程当中,很不习惯。第一次做业是多项式的加减法,整体的设计难度不大,可是其中牵涉不少的细节问题。在公测和互测各出现了两个BUG。公测中的两个BUG分别是由于正则表达式过于冗长,致使爆栈和前导零输入太多报错。公测的这两个问题,反应了思考还不够严谨,没有想到会爆栈。互测中的两个BUG则是由于在Read里没有说明嵌套输入会报错,即便实际操做中会看成一个输入错误输出和没有定义输入为{}时,输出什么。互测中的两个问题,反应了没有仔细研究各类输入输出的分类。3d
而做为测试者,拿到的程序公测全过。因此想到了输入和输出的问题,分别找到了两个问题,一个是只输入{不报错,以及在输入的末尾多一个“,”不报错。综合来看,第一次做业的输入输出是一个难点,很容易少考虑状况。对象
第二次做业blog
1.度量分析队列
从第二次做业的metrics图能够看出,出现了与第一次做业一样的问题,圈复杂度超标和嵌套现象严重。由于所写的调度的类中,承担的职能太多以及输入和调度频繁的循环判断。
2.类图
从类图能够看出,调用关系有点复杂不明确,由于写的时候没有考虑清楚各个类的方法,在写的过程当中,强行放入了一些方法,致使最后对类的考虑不明确清晰。在之后写做业的过程当中,会仔细明确的划分类。
3.关于BUG
相比于第一次做业的主要是输入格式的错误,此次的问题则主要是没有考虑到数据溢出的问题,致使公测中与数据溢出相关的两个测试均出错了。而互测则没有被发现BUG。
做为测试者,在拿到的程序中,发现了一个与输入有关的问题,在正确的输入后添加字符,不会报错。
第三次做业
1.度量分析
从第三次做业的metrics图能够看出,出现了与前两次做业一样的问题,圈复杂度超标和嵌套现象严重。一样是由于所写的调度的类中,承担的职能太多以及输入和调度频繁的循环判断。而且由于第三次做业是在第二次做业的基础上加入了捎带操做,致使问题更加严重,程序更加臃肿。这三次的做业,都反应了程序封装和代码简洁的重要性。
2.类图
从类图能够看出,第三次做业类的调用关系比第二次做业更清晰明确。可是思路依然有些不清晰,对每一个类的职能的考虑须要更详细。
3.关于BUG
对比傻瓜电梯,捎带问题显得难度上升了不少。所以若是对捎带问题看的不全面深刻,很容易出现BUG。正是由于如此,此次公测中出现了2个BUG,互测中出现了4个BUG。公测中的两个BUG,分别是副请求时间==主请求开关门完毕时间不捎带和e.sta==DOWN的部分应该在主请求处理完后,选队列位置最前的成为主请求。而互测中则主要是e.sta==STILL和e.sta==UP问题。此次做业出现了不少问题,反映了对问题分析不够深刻,致使程序设计不统一完备。
而做为测试者,这次拿到一个全过的代码,因此从一条条BUG树类样例去测试,但都没有找到这份做业的错误。
心得体会