2019-oo-第一次总结
2019-03-26 18:15 木杉月 阅读(270) 评论(0) 编辑 收藏 举报一、度量分析程序结构
1.UML类图分析
1.1第一次作业
1.2第二次作业
1.3第三次作业
1.4总结
从UML类图三次作业的可以看出,我从一个类到逐渐利用多个类,代码结构在不断的进步。有许多模块是可以独立出 来的,而且这样修改起来也不用考虑对其他模块的影响,例如我将判断与求导还有输出分成3个类,这样3个类之间就互 不干扰。
2.Statistics分析
2.1第一次作业
2.2第二次作业
2.3第三次作业
2.4总结
可以看到代码量在随着作业难度的提升逐渐增长。
3.MetricsReloader分析
3.1第一次作业
3.2第二次作业
3.3第三次作业
3.4总结
ev(G)基本复杂度是用来衡量程序非结构化程度的,基本复杂度高意味着非结构化程度高,难以模块化和维护。
Iv(G)模块设计复杂度是用来衡量模块判定结构,软件模块设计复杂度高意味模块耦合度高,模块设计复杂度不能大于圈复杂度,通常是远小于圈复杂度。
v(G)是用来衡量一个模块判定结构的复杂程度,圈复杂度大说明程序代码可能质量低且难于测试和维护。
可以看到三次作业,模块的耦合度都比较高,甚至某个类的Iv(G)已经快接近v(G)。总的来说,自己还未成功的把程序模块化,不同类之间联系过大。自己对于面对对象的思维还是不够明确。
二、自己程序bug分析
1.第一次作业
第一次bug由于我最后晚上优化程序时,优化完了就上交,自己并未检验到底优化是否增添了bug导致只要表达式里没有x就会报错。原因是我只在ArrayList中存了x的项,而我后面访问该ArrayList时并未检验是否是空的,导致出现问题。
2.第二次作业
第二次bug由于正则表达式中\\t代表制表符,而在字符串中\t代表制表符,而我在字符串中写\\t代表制表符,从而出现了bug。
3.第三次作业
第三次bug中我在判断正误的一个正则表达式中少加了[ \\t],导致本来应该正确的表达式出错。还有一个还是由于我优化出现了问题。
三、发现别人的bug
在这三次作业,第一个找到的bug是空白符,应该是WF,但是有些人却什么都没有输出。第二个bug是一个表达式化简之后为 0,但是他却未考虑这种情况。第三个bug是--x但是他却判断其是错误。
四、Applying Creational Pattern
在这三次作业中,当我在互测屋中看到别人的代码时,看到很多人都是讲项分成不同的类,而我就只有一个项,包括了幂函 数,三角函数和常数,而且求导也是在同一个类,现在看到别人,就想到,可以把项当做父类,而其他的就是其子类,也就是用继 承。而同理,求导也可以这样做。虽然自己面向过程的思想还是在体现。但是可以看到自己也慢慢的具有了面对对象的思想了,也 在不断地进步。